jaf*_*ffa 11 asp.net-mvc razor
我有一个使用TextBoxFor的文本框,其中包含数据.
我有一个模型的ID和一些其他基本数据,但直接显示在视图中的标签.
当我提交表单时,只有文本框字段包含模型上的数据,其他所有内容都为空,包括Id.这意味着它不会保存到数据库中.
什么会导致所有字段与文本框分开?
Ric*_*lay 16
这是Web工作的方式,只有表单元素与表单一起提交,而标签不是表单元素.
这里经常发生的是你:
Html.Hidden/ Html.HiddenFor)以及文本框由于发布的数据类由于缺少属性([Required]例如标记为)而经常"无效" ,因此创建仅具有更改属性的新类(称为"命令模型")非常常见.此类可以拥有自己的验证属性,因此不会影响表单验证.
仅将输入发回服务器.如果您希望根据页面上的数据填充模型,则它们必须位于输入(或URL的一部分)中.标签元素中的数据不会使用表单发布到服务器(这是标准的HTML表单行为).通常,您使用隐藏字段回发不可编辑的模型数据,或者只是引用模型ID并从数据库重新填充,更新可编辑属性(如下所示).
例:
@(using Html.BeginForm( new { id = Model.ID } ))
{
<p>
<label>Fixed Property:</label>
@Model.SomeFixedProperty
</p>
<p>
@Html.LabelFor( m => m.EditableProperty )
@Html.TextBoxFor( m => m.EditableProperty )
</p>
}
Run Code Online (Sandbox Code Playgroud)
调节器
[HttpPost]
public ActionResult Foo( int id, string editableProperty )
{
var model = repo.GetById( id );
model.EditableProperty = editableProperty;
repo.Save();
return View( model );
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10733 次 |
| 最近记录: |