ASP.NET MVC表单处理问题

时间:2009-09-02 21:27:57

标签: asp.net-mvc

我的控制器中有以下操作:

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Edit(int id, FormCollection formCollection)
    {
        // do stuff with form collection
    }

这很好用。我的问题是,当我使用视图模型对象(比如MyFormViewModel)时,没有属性包含任何表单细节。例如有一个名为MyName的属性

在我的表单中,我有一个名为=“MyName”的文本输入字段

上面的formCollection对象包含一个具有正确值的MyName条目

但如果我将上面的代码更改为:

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Edit(int id, String MyName)
    {

    }

然后myName为空。

有谁知道为什么会这样?

编辑:aspx文件是:

<form action="/mycontroller/edit" method="post" id="myControllerForm" enctype="multipart/form-data">
<fieldset>
<div class="forms">
    <div class="row">
        <label> Name: </label>
        <span class="input_wrapper">
            <%= Html.TextBox("MyName", Model.MyName, new { @class = "text" }) %>
         </span>
    </div>
    <div class="row">
       <input name="" type="submit" />
    </div>
</div>
</fieldset>
</form>

1 个答案:

答案 0 :(得分:1)

使用POST数据更新模型时遇到问题吗? 如果是这样,如果表单中的字段和实际数据模型的名称相同,则可以执行以下操作:

// POST: /Room/Edit/5
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection collection)
{
    // load the actual data model from the DB using whatever ORM you use...
    MyDataModel model = dataRepository.GetItem(m => m.id == id);

    try
    {
        UpdateModel(model);
        return View(new MyViewModel(model));
    }
    catch
    {
        // error handling...
        return View();
    }
}

UpdateModel(T o);方法调用将使用Controller的当前ValueProvider中的数据更新提供的对象。