2017-02-17 66 views
0

如何阻止ViewBag中的值綁定到MVC中的控件?該視圖不是強類型的。模型綁定中使用的ViewBag

我使用ViewBag將數據表傳遞給視圖。這個數據表被作爲值傳遞給使用HtmlHelper上的擴展方法構建的自定義控件。

視圖有一些依賴於EntityID的邏輯,所以我使用ViewBag將EntityID傳遞給視圖。

控件構建了一個名爲'EntityID'的隱藏字段,而不是使用我從數據集傳遞給html助手的值,而是綁定到ViewBag中的值。

return htmlHelper.Hidden(name, value, attributes); 

我如何獲得HtmlHelper來使用我的值而不是使用ViewBag中的內容?

當渲染視圖時會發生這種情況。

通過Ajax GET請求對View的控制器進行調用,並將返回的視圖html附加到div

GET請求將對象發送到操作方法。該對象有一個名爲ENTITYID

+0

那就是'HtmHelper'methods的工作方式 - 他們首先檢查'ModelState'中的值,如果找不到,則檢查'ViewData',最後檢查model屬性。 –

+0

@StephenMuecke我可以建立一個隱藏的輸入控制字符串,但我想知道是否有辦法阻止'HtmlHelper'在模型綁定過程中使用ViewBag。 – Developer

+0

您可以提供更多的上下文 - 這是在視圖第一次呈現時發生,還是僅在您提交後返回視圖,或者該方法的參數與名稱匹配時纔會發生。 –

回答

0

你不能限制太多關於HTML傭工的內部工作屬性,但你總是可以呈現自己:

<input type="hidden" name="@Html.NameFor(m => m.EntityID)" value="@Model.EntityID" />