在我問我的問題之前,讓我說我DID看起來在線,並且我爲這個問題尋找堆棧溢出,DID找到某些解決方案,但沒有找到我找到的工作。所以我在這裏問希望得到這個問題的答案,並感謝任何幫助。BeginForm更改「名稱」值
我正在做一個表單發佈到外部網站。在我的模型我在我的LoginViewModel執行以下操作創建的所有值:
public string returnurl { get; set; }
在我的構造函數中我設置需要像這樣的價值觀:
returnurl = "www.retururl.com";
在我的索引我頁面後像所以用MVC 4.0剃刀:
@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "myForm", @action = Model.loginUrl }))
{
@Html.HiddenFor(model => model.returnurl)
}
當我檢查小提琴手它在幕後執行以下操作:
<input id="returnurl" name="returnurl" type="hidden" value="www.returnurl.com">
它使輸入ID和名稱變量returnurl的名稱。
我的問題是,我的表單中的一個名稱值必須是「bb-post」。我顯然不能在我的loginViewModel中命名一個變量bb-post,所以我嘗試的只是設置名稱爲bb_post,然後在我的索引頁中。
所以,我做了以下內容:
@Html.HiddenFor(model => model.bb_post, new { name = "bb-post" })
但這並沒有工作,當我檢查小提琴手它做了以下內容:
<input id="bb_post" name="bb_post" type="hidden" value="" />
我也試過這樣:
@Html.HiddenFor(model => model.bb_post, new { @name = "bb-post" })
但得到這個:
<input id="bb_post" name="bb_post" type="hidden" value="" />
最後嘗試這樣:
@Html.HiddenFor(model => model.bb_post, new { @Name = "bb-post" })
,但得到這個:
<input Name="bb-post" id="bb_post" name="bb_post" Name="bb-post" type="hidden" value="" />
使用資本的名稱,以便@Name給了我兩個名稱值。這不是我正在尋找的。
我也知道我可以這樣直接寫到HTML:
<input id="bb_post" name="bb-post" type="hidden" value="" />
但爲了讓這一切我希望有一種方法來保持這種格式面色不變:
@Html.HiddenFor(model => model.bb_post, new { @Name = "bb-post" })
謝謝。
編輯: 我確實在推薦的問題中找到了答案,但接受的答案並不正確。我一定沒有仔細看過被接受的答案(我通常會這樣做並道歉)。但是,如果其他人不小心跳過對接受的錯誤答案(這是錯誤的,因爲它會生成兩個名稱值),那麼以下是有效的。 這是正確的答案,什麼爲我工作:
@Html.Hidden("bb-post", Model.bb_post, new { id="bb-post" })
謝謝。
可能重複的[ASP.NET MVC 4重寫發射的html名稱和id](http://stackoverflow.com/questions/14810100/asp-net-mvc-4-override-emitted-html-名稱和編號) – James
你不需要在設置名稱時使用@只需使用'new {Name =「bb-post」})' – JamieD77
問題中接受的答案實際上是錯誤的,我在嘗試後意外跳過了它它並沒有工作。下面的答案儘管@James工作,我編輯我的問題提供的信息。 – Fro1