0
我爲枚舉創建了一個編輯器模板,它工作正常,直到我決定使用Ajax.BeginForm。 status
具有以下定義的屬性:編輯器模板在調用Ajax.BeginForm和Html.BeginForm後無法工作
<DisplayName("Status")>
<UIHint("enum")>
Public Property status As String
我已經嘗試了以下技術途徑:
@Using Ajax.BeginForm("New", "Os", Nothing)
@Html.EditorFor(Function(m) m.status, "Enum", New With { .enumType = GetType(OsStatus)})
End Using
@Ajax.BeginForm("New", "Os", Nothing)
@Html.EditorFor(Function(m) m.status, "Enum", New With { .enumType = GetType(OsStatus)})
@Using Html.BeginForm()
@Html.EditorFor(Function(m) m.status, "Enum", New With { .enumType = GetType(OsStatus)})
End Using
@Html.BeginForm()
@Html.EditorFor(Function(m) m.status, "Enum", New With { .enumType = GetType(OsStatus)})
以上都沒有奏效。
我的模板代碼如下
@ModelType String
@code
Dim options As IEnumerable(Of OsStatus)
options = [Enum].GetValues(ViewData("enumType")).Cast(Of OsStatus)()
Dim list As List(Of SelectListItem) =
(from value in options
select new SelectListItem With { _
.Text = value.ToString(), _
.Value = value.ToString(), _
.Selected = value.Equals(Model) _
}).ToList()
End If
End Code
@Html.DropDownList(Model, list)
調用.BeginForm
方法後,我的模板仍叫,但我的模板裏面的Model
屬性是null
。
任何想法?
你是對的每一點。但是.. 1。'End If'是在簡化代碼時不注意的結果 2.我稍後修改了比較,但那不是原因 3.使用'Model'作爲名稱也是一個錯誤但並沒有造成問題 真的很好的提示'鑄造'的概括(榮譽!) 我不知道爲什麼,但總之,如果我不調用'.BeginForm'方法,該模板起作用。如果我正在使用'.BeginForm' **我必須**在編輯器上添加一個條件來渲染空模型的下拉列表,這在我創建一個Os時發生。 謝謝! – svallory 2012-02-24 23:05:18