开发者

Dynamically rendered MVC 3 validation not working

开发者 https://www.devze.com 2023-02-21 08:18 出处:网络
I\'m rendering some input controls dynamically. I wrote a method like this public override MvcHtmlString GetActionControl(HtmlHelper<ItemD开发者_高级运维etailsViewModel> helper)

I'm rendering some input controls dynamically. I wrote a method like this

        public override MvcHtmlString GetActionControl(HtmlHelper<ItemD开发者_高级运维etailsViewModel> helper)
        {
        return 
            helper.EditorFor(A => A.Triage.ProcessNumber) + 
            helper.ValidationMessageFor(a => a.Triage.ProcessNumber, "*")
        }

And I'm calling this from the main CSTHML file like this:

<!-- 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>
}

Notice that I'm passing the current HtmlHelper to the GetActionControl() method.

Problem is, the generated output is only:

<input class="text-box single-line" id="Triage_ProcessNumber" name="Triage.ProcessNumber" type="text" value="" />

Ie, no "extended" validation fields, and no validation . Aditionally I've discovered that the helper.ValidationMessageFor() method returns NULL.

However, If I put the editor and the validationMessage on the .cshtml directly everything works like a charm:

@Html.EditorFor(a => a.Triagem.ProcessNumber)
@Html.ValidationMessageFor(a => a.Triagem.ProcessNumber, "*")

What am I doing wrong here? Shouldn't the end result of calling HtmlHelper.EditorFor be the same? I'm sorry if this is a lame question but there isn't much information on generating HTML markup dynamically in regards to MVC 3.

I've checked the common pitfalls and everything is OK: validation enabled on web.config, the model class has the proper validation attributes, etc.

Any help would be greatly appreciated :)

PS: I've simplified the pasted code and ommited the form.


I don't know if this will help you, but validation is rendered when Html.ViewContext.FormContext is not null. When i had same problem, i just initialized form context with new FormContext(); and it worked

0

精彩评论

暂无评论...
验证码 换一张
取 消