【发布时间】:2012-12-12 13:21:15
【问题描述】:
我知道这是一个非常基本的问题。
但是你能告诉我所有可能的选项,
从 Razor 视图调用 控制操作方法 [通常是任何服务器端例程] 并且,
每个场景最适合使用。
谢谢。
【问题讨论】:
标签: javascript jquery ajax asp.net-mvc razor
我知道这是一个非常基本的问题。
但是你能告诉我所有可能的选项,
从 Razor 视图调用 控制操作方法 [通常是任何服务器端例程] 并且,
每个场景最适合使用。
谢谢。
【问题讨论】:
标签: javascript jquery ajax asp.net-mvc razor
方法一:使用jQuery Ajax Get调用(部分页面更新)。
适用于需要从数据库中检索json数据的时候。
控制器的动作方法
[HttpGet]
public ActionResult Foo(string id)
{
var person = Something.GetPersonByID(id);
return Json(person, JsonRequestBehavior.AllowGet);
}
Jquery GET
function getPerson(id) {
$.ajax({
url: '@Url.Action("Foo", "SomeController")',
type: 'GET',
dataType: 'json',
// we set cache: false because GET requests are often cached by browsers
// IE is particularly aggressive in that respect
cache: false,
data: { id: id },
success: function(person) {
$('#FirstName').val(person.FirstName);
$('#LastName').val(person.LastName);
}
});
}
人物类
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
方法二:使用jQuery Ajax Post调用(部分页面更新)。
适用于需要将部分页面发布数据到数据库时。
Post 方法也和上面一样,只是在 Action 方法上替换 [HttpPost] 并为 jquery 方法键入 post。
更多信息请查看Posting JSON Data to MVC Controllers Here
方法3:作为表单发布场景(整页更新)。
适用于需要将数据保存或更新到数据库中。
查看
@using (Html.BeginForm("SaveData","ControllerName", FormMethod.Post))
{
@Html.TextBoxFor(model => m.Text)
<input type="submit" value="Save" />
}
动作方法
[HttpPost]
public ActionResult SaveData(FormCollection form)
{
// Get movie to update
return View();
}
方法四:作为表单获取场景(整页更新)。
适合需要从数据库中获取数据的时候
Get 方法也和上面一样,只是将 [HttpGet] 替换为 Action 方法,FormMethod.Get 替换为 View 的 form 方法。
希望对你有帮助。
【讨论】: