我的控制器中有以下操作:
[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>
答案 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中的数据更新提供的对象。