Asp.net mvc MVC将数据从视图发送到控制器

Asp.net mvc MVC将数据从视图发送到控制器,asp.net-mvc,Asp.net Mvc,我是MVC3的新手 我知道如何将强类型对象从控制器发送到视图。我现在看到的是一个视图,其中包含一个由该数据组成的表/表单 用户可以在该视图(html页面)中更改该数据 当他们单击“保存”时,如何将视图中的数据发送回控制器,以便更新数据库 我是否重载控制器方法,使其接受模型类型的参数?你能提供一些源代码吗 (请不要显示将数据持久化到数据库的代码,我知道该如何做) 非常感谢你帮助我 我还更喜欢在MVC中使用@Html.BeginForm(),从POST或GET HttpRequests中清除数据的行

我是MVC3的新手

我知道如何将强类型对象从控制器发送到视图。我现在看到的是一个视图,其中包含一个由该数据组成的表/表单

用户可以在该视图(html页面)中更改该数据

当他们单击“保存”时,如何将视图中的数据发送回控制器,以便更新数据库

我是否重载控制器方法,使其接受模型类型的参数?你能提供一些源代码吗

(请不要显示将数据持久化到数据库的代码,我知道该如何做)

非常感谢你帮助我


我还更喜欢在MVC中使用
@Html.BeginForm()

,从POST或GET HttpRequests中清除数据的行为被称为模型绑定-与此相关的内容很多

开箱即用,MVC将根据约定绑定Get和Post变量,例如,名为“FormName”的表单字段将绑定回控制器上同名的参数


模型绑定也适用于对象-MVC将为您的控制器实例化一个对象,并使用与表单相同的名称设置属性。

我喜欢为我的post数据创建一个操作方法。假设您有一个UserViewModel:

public class UserViewModel
{
    public int Id { get; set; }
    public string Name { get; set; }
}
然后用户控制器:

public class UserController
{
    [HttpGet]
    public ActionResult Edit(int id)
    {
        // Create your UserViewModel with the passed in Id.  Get stuff from the db, etc...
        var userViewModel = new UserViewModel();
        // ...

        return View(userViewModel);
    }

    [HttpPost]
    public ActionResult Edit(UserViewModel userViewModel)
    {
        // This is the post method.  MVC will bind the data from your
        // view's form and put that data in the UserViewModel that is sent
        // to this method.

        // Validate the data and save to the database.

        // Redirect to where the user needs to be.
    }
}
我假设你已经有了一个表单。您需要确保表单将数据发布到正确的操作方法。在我的示例中,您可以这样创建表单:

@model UserViewModel

@using (Html.BeginForm("Edit", "User", FormMethod.Post))
{
    @Html.TextBoxFor(m => m.Name)
    @Html.HiddenFor(m => m.Id)
}
所有这些的关键是MVC所做的模型绑定。使用HTML帮助程序,如我使用的HTML.textbox。另外,您会注意到我添加的视图代码的顶行。@model告诉视图您将向其发送一个UserViewModel。让引擎为你工作


编辑:很好的呼叫,在记事本中完成了所有操作,忘记了Id的隐藏

+1写的是几乎相同的答案。对于视图部分,您也可以与DataAnnotations一起使用来控制输出,而不是手动设置每个可编辑属性!编辑了我的例子。@James,我从来没有对EditorForModel做过很多工作,我也不知道他的网站有多复杂。好的建议。另外,这是一个很好的链接:输入助手是我用来输入字段的。非常感谢。你的帖子很有道理!我能够添加我的用户控件,将当前数据发送到表单控件,然后将它们发送回控制器。非常感谢!完美的解释,写得很好,解释得很清楚……棒极了。我爱你!我爱你!哇!