![](/img/trans.png)
[英]View is added to UIViewControllerWrapperView, but it doesn't appear correctly
[英]Value doesn't appear filled in the View
我这里有一个奇怪的问题。
在模型(.cs)中:
public long? ContactoAdditionalId { get; set; }
public long Test1 { get; set; }
public long? Test2 { get; set; }
public string Test3 { get; set; }
在Controller中(在操作之前,在视图之前):
[HttpPost]
[AllowAnonymous]
public ActionResult Index( Contacto model )
{
DoSomeStuff( model, ... );
(...)
model.Test1 = model.ContactoAdditionalId.HasValue ? model.ContactoAdditionalId.Value : -1;
model.Test2 = model.ContactoAdditionalId;
model.Test3 = model.ContactoAdditionalId.HasValue ? model.ContactoAdditionalId.Value.ToString() : "No value!";
return View( model );
}
最后在视图(.cshtml)中:
@using MyApp.Models;
@model Contacto
@using ( Html.BeginForm( "Index", "Contacto" ) )
{
@Html.HiddenFor( model => model.ContactoAdditionalId )
@Html.HiddenFor( model => model.Test1 )
@Html.HiddenFor( model => model.Test2 )
@Html.HiddenFor( model => model.Test3 )
(...)
正如你可能已经猜到了,ContactoAdditionalId(我把它用真名,如果这是问题)值在视图中不出现。
当我按下F12在Chrome中打开开发者工具和检查HTML, 没有为ContactoAdditionalId没有价值 ,但也有测试1,Test2的和Test3的值。
注意我用了很久,很久吗? 和一个用于检查问题是否与类型有关的字符串,但是所有这三个字符均在HTML中显示值。
当然,此隐藏字段的目的是在发帖时取回ContactoAdditionalId。 这样,它不起作用,并且其model属性为null!
我还注意到了一些奇怪的事情:如果在View中添加HiddenFor之前:
@Html.DisplayFor( model => model.ContactoAdditionalId, ... )
它突然起作用,现在隐藏字段具有价值!
这是怎么回事 我在Visual Studio 2017中逐步进行了调试,当我到达动作代码结尾时,它开始单步进入cshtml视图,因此没有其他代码(据我所知,至少不是我们项目的代码)动作之后并且在视图中HTML变换前被执行。
您可能在ModelState中有一个参数,名称与您看不到数据的名称相同。 如果要在Model中更改该值,而没有从ModelState中清除该值,则HiddenFor将首先选择ModelState字段。 请执行ModelState.Clear()或仅删除具有ModelState.Remove(“ ContactoAdditionalId”)“的字段
另外,您可以使用ModelState.Clear()。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.