2014-06-11 101 views
-2

這是基於myModel隱藏字段不會傳遞值到控制器

public class myModel : myBaseModel 
{ 
    public string AccountName { get; set; } 
    public string BankName { get; set; } 
    public string BranchCode { get; set; } 
} 

我收到帳戶名,BANKNAME和BranchCode從視圖與textBoxFor

 @Html.LabelFor(m => m.AccountName, GetContentBody(101111)) 
    @Html.TextBoxFor(m => m.AccountName) 
    @Html.ValidationMessageFor(m => m.AccountName) 

問題是我不需要Accountname文本框,但是我不允許從模型中刪除AccountName,我應該在視圖中分配這個值。

所以我計劃改變這個文本框與html.hiddenFor與它的價值,問題是hiddenfield是將帳戶名稱傳遞給控制器​​作爲null。

**我的問題是,爲什麼hiddenfield是通過其值設爲空?**

我刪除了這個

@Html.TextBoxFor(m => m.AccountName) 

並補充,而不是它

@Html.HiddenFor(m=>m.AccountName, new { @Value = "defaultUserName" }); 
+1

並不清楚你的要求?如果你沒有使用/不希望'AccountName'那麼爲什麼它是一個問題,如果它是空的?如果你真的使用它,並希望它是一個隱藏的領域,那麼爲什麼不告訴我們你的代碼與它隱藏,所以我們可以看到它,而不用猜測你做了什麼? – Belogix

+1

問題出現時爲什麼不用'html.hiddenFor'顯示代碼? – Satpal

+0

隱藏字段將獲得您在創建時返回模型時設置的值。如果您將其設置爲空白,它將在帖子上返回爲空。要麼給它創造價值,要麼用JS來改變它。 – user373455

回答

3

你做錯了。你必須使用它this overloadthis overload,它看起來像你錯過了一個逗號分隔的擴展方法的參數:

相反的:

@Html.HiddenFor(m=>m.AccountName new { @Value = "defaultUserName" }) 

你需要做的:

@Html.HiddenFor(m=>m.AccountName, new { @Value = "defaultUserName" }) 
0

老兄,你可以換成<input type="hidden" value="@Model.AccountName" />

如果您的模型已填充,將正常工作!

+0

需要在'input'中提供'name ='AccountName'''... ' – Belogix

3
<input type="hidden" value="@Model.AccountName" name="AccountName" /> 

你必須給你的控件命名,因爲這就是mvc地圖。

0

當你將Html Helper Controls值傳遞給控制器​​的方法使用參數 你必須提供該幫助器的名稱屬性 如

@Html.HiddenFor(m=>m.AccountName, new { @Value = "defaultUserName" , name = "hiddenname" }) 

和控制器

public ActionResult Index(string hiddenname){} 

這將趕上烏爾視圖中隱藏的價值

相關問題