我正在開發一個asp.net MVc核心應用程序。我有這樣的表單元素的彈出:html.hidden未在asp.net MVC核心中設置值剃刀視圖
@using (Html.BeginForm("AddIVR", "ITPVoice", FormMethod.Post, new { role = "form" }))
{
@*@Html.HiddenFor(m =>m.m_newIVR.Account, new { @value= Model.accountID})*@
@Html.Hidden("m.m_newIVR.Account", Model.accountID)
}
我有一個這樣的視圖模型:
public class AccountDetailsViewModel
{
public IVRS m_newIVR { get; set; }
}
和IVRS這樣的模型類:
public class IVRS
{
[JsonProperty("_id")]
public string Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("description")]
public string Description { get; set; }
[JsonProperty("account")]
public string Account { get; set; }
}
我想在我看來,像這樣填充它:
@Html.HiddenFor(m =>m.m_newIVR.Account, new { @value= Model.accountID})
但是看到視圖源,值是NULL
我嘗試使用:
@Html.Hidden("m.m_newIVR.Account", Model.accountID)
,它顯示m_newIVR.Account填充。
然後我張貼的形式控制器這個動作
[HttpPost]
public ActionResult AddIVR(AccountDetailsViewModel model)
{
return RedirectToAction("AccountDetails", "mycontroller")
}
雖然我看到ACCOUNTID的視圖(使用viewsource)填充,但在後model.m_newIVR.Account的操作方法值爲空。
HTML輸出如下:
<div id="edit-ivrs-modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" style="display: none;">
<div class="modal-dialog">
<form action="/ITPVoice/AddIVR" method="post" role="form"> <div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Add IVR</h4>
<input id="m_newIVR_Account" name="m_newIVR.Account" type="hidden" value="" />
<input id="AccountId" name="AccountId" type="hidden" value="56f5e3d77ea022a042665be1" />
</div>
<div class="modal-body">
</div>
</div>
我的問題是:
1)。爲什麼html.hiddenfor不是模型變量的設置值? 2)。雖然html.hidden是設置值,但爲什麼它不能在後處理方法中訪問?
請建議。
感謝
使用'新{@值= Model.accountID}'決不設置'value'屬性。它不清楚你想要綁定什麼,但是ir應該是'@ Html.HiddenFor(m => m.m_newIVR.Account)',並且在將模型傳遞給控制器方法之前設置'Account'的值風景。 –
而您的'Html.Hidden()'不起作用,因爲它會生成'name =「m.m_newIVR.Account」'並且您的模型不包含名爲'm'的屬性 –
正在使用部分視圖?什麼@model在頁面頂部?我懷疑是因爲對於你說Model.AccountId的值,並且在隱藏中你使用了不同的模型。我試過它在我的模型中都適合我。 – dotnetstep