我正在動態呈現一些輸入控件。我寫了一個方法,像這樣動態呈現MVC 3驗證不起作用
public override MvcHtmlString GetActionControl(HtmlHelper<ItemDetailsViewModel> helper)
{
return
helper.EditorFor(A => A.Triage.ProcessNumber) +
helper.ValidationMessageFor(a => a.Triage.ProcessNumber, "*")
}
而且我從這樣的主要CSTHML文件調用此:
<!-- Render Action Controls for each possible action -->
@foreach (IActionControl iac in WorkflowActionControls.GetActionControls(Model.WorkflowItem.CurrentState))
{
<div id="@("div" + iac.ControlName)" class="ui-corner-all ui-widget ui-widget-content" style="margin-top: 24px; padding: 15px;">
@iac.GetActionControl(this.Html)
</div>
}
請注意,我傳遞當前的HtmlHelper到GetActionControl()方法。
問題是,所生成的輸出是僅:
<input class="text-box single-line" id="Triage_ProcessNumber" name="Triage.ProcessNumber" type="text" value="" />
即,沒有 「擴展」 的驗證字段和沒有驗證。此外,我發現helper.ValidationMessageFor()方法返回NULL。
但是,如果我把編輯器和validationMessage在.cshtml直接的一切就像一個魅力:
@Html.EditorFor(a => a.Triagem.ProcessNumber)
@Html.ValidationMessageFor(a => a.Triagem.ProcessNumber, "*")
什麼我錯在這裏做什麼?不應該調用HtmlHelper.EditorFor的最終結果是一樣的嗎?對不起,如果這是一個蹩腳的問題,但沒有太多關於MVC 3動態生成HTML標記的信息。
我檢查了常見的陷阱,一切都正常:在web.config上啓用驗證,模型類有適當的驗證屬性等
任何幫助,將不勝感激:)
PS:我已經簡化粘貼代碼中省略形式。
它的工作,你是人間的上帝! – tggm 2011-04-02 22:59:39
令人印象深刻!非常感謝 – 2012-03-22 02:08:59