我一直在使用C#,並且完成了我的web表單的共享,但我對MVC非常陌生,並且我不知道如何將這個問題用詞組來獲得Google的幫助。嵌套部分和模板;如何實現條件視圖或編輯器?
我正在開發一個由EF支持的MVC站點,並試圖弄清楚事情的竅門。所以我有一個允許用戶創建實體「A」的視圖。實體A有一個對實體B的引用,它是地址,它又對實體C的引用是地址'區域。
所以我想通了,我可以創建一個編輯器模板,可以注入實體A的創建視圖,並返回與它的實體B參考填充的A模型。我可以在實體B模板上做同樣的事情,爲實體C注入一個編輯器模板並獲取B的引用屬性中的正確實體。
我的問題是,實體C是一個很少創建的實體。用戶需要創建一個實體的能力,這是一個非常簡單的實體(具有名稱和country_enum),所以我不希望用戶只有在他們發現正確的C實體尚未在列表中,然後返回到頁面並重新輸入它們可能已經填充的所有其他字段。
如何創建一個「條件」視圖或一組視圖,這將允許用戶選擇一個現有的實體C,或者創建一個新的實體C(如果他們需要的話),而不必離開Create-Entity A頁面?
爲了清楚,這是我的當前設置:
EntityA-Create.cshtml
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.HiddenFor(A => A.ParentID)
<fieldset>
//Entity A editors etc...
@Html.EditorFor(A => A.Address, "Address.cshtml", null)
</fieldset>
}
EditorTemplates/Address.cshtml
@model Models.Address
<div class="editor-label">
@Html.LabelFor(B => B.Property1)
</div>
<div class="editor-field">
//Entity B Property editors etc...
</div>
@Html.EditorFor(B=> B.Region, "Region.cshtml", null)
在第二視圖/模板,我需要一個方法來渲染一個完整的「創建新區域」編輯器模板(它現在執行)或者從下拉菜單中選擇現有區域「view/template/etc,這仍然會返回區域模型相同的wa它目前確實(或接近)。我的偏好是儘可能避免使用JS,但是你是專家!
如果你不想讓你的'添加新區域'按鈕重定向到一個新頁面,那麼你需要javascript/jquery來顯示一個彈出窗體來輸入新的區域細節,然後使用ajax發佈它,如果成功,將新的區域添加到下拉列表(並選擇它) – 2015-04-01 23:23:49