use*_*645 1 viewmodel razor asp.net-mvc-3
这个问题之前已被其他人提出过,但仍然没有得到它.我正在使用MVC3 Razor,我有屏幕输入故障单.输入数据(textarea note)后,控制器将重定向回同一屏幕.大多数数据仅供显示.如果我使用DisplayFor或DisplayTextFor,则不会回发数据.我使用过HiddenFor.这样可行.但是,我一直听到别人说HiddenFor不理想.我不想编辑因为,我想轻松禁用该字段.(我跟着工作说HiddenFor错了,但不会说原因.:<lol)
剃刀
@Html.DisplayTextFor(m => m.Ticket.Name)
Run Code Online (Sandbox Code Playgroud)
视图模型
public class TicketDetailsViewModel
{
[DisplayName("Customer Name")]
public string Name { get; set; }
Control
[HttpPost]
public ActionResult Detail(TicketDetailsViewModel viewModel)
return RedirectToAction("Detail");
Run Code Online (Sandbox Code Playgroud)
只有属于输入或其他表单控件的值才会回发到客户端.DisplayFor仅用于模型显示其数据,没有别的.
你有两个选择; 使用隐藏字段,以便每次都使用数据填充模型,或者再次获取值.如果您的数据不敏感,前一种方法就可以了,因为最终用户可以更改隐藏值并重新发布表单.因此,例如UnitPrice不会是您希望从客户端获得的东西,即使在隐藏字段中,恶意用户也可以修改单价.在这种情况下,您总是希望自己重新加载数据并重新填充模型.
这也没有错; 如果数据不可编辑并且您需要显示它,则需要每次都获取它.我个人在谨慎方面犯了错误,每次都在服务器上重新获取只读数据,而不是将数据放入隐藏字段.
归档时间: |
|
查看次数: |
1422 次 |
最近记录: |