57

我知道这是一个非常基本的问题。

但是你能告诉我所有可能的选项从 Razor 视图
调用控制操作方法[通常是任何服务器端例程],以及 在哪些场景中最适合使用。

谢谢。

4

1 回答 1

97

方法一:使用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; }
}

方法2:使用jQuery Ajax Post 调用(部分页面更新)。

适用于需要将部分页面发布数据到数据库时。

Post 方法也和上面一样,只是将 [HttpPost]Action 方法和类型替换post为 jquery 方法。

有关更多信息,请在此处查看将 JSON 数据发布到 MVC 控制器

方法三:作为表单发布场景(整页更新)。

适用于需要将数据保存或更新到数据库中时。

看法

@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();
   }

方法四:作为Form Get场景(整页更新)。

适用于需要从数据库获取数据的时候

Get 方法也和上面一样,只是替换 [HttpGet]Action 方法和FormMethod.GetView 的 form 方法。

我希望这对你有帮助。

于 2012-12-27T06:02:40.477 回答