![](/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.