Razor Webmatrix:将ModelState传递到部分页面

Razor Webmatrix:将ModelState传递到部分页面,razor,webmatrix,Razor,Webmatrix,我正在构建一个网页站点,当我试图将ModelState数据传递到部分页面时出现问题 以下是Create.cshtml的代码: @{ Page.Title = "Create Fund"; var name = ""; if (IsPost) { name = Request.Form["name"]; if (!name.IsValidStringLength(2, 128)) { ModelState.Add

我正在构建一个网页站点,当我试图将
ModelState
数据传递到部分页面时出现问题

以下是Create.cshtml的代码:

@{
    Page.Title = "Create Fund";

    var name = "";

    if (IsPost) {
        name = Request.Form["name"];

        if (!name.IsValidStringLength(2, 128)) {
            ModelState.AddError("name", "Name must be between 2 and 128 characters long.");
        }
    }
}

@RenderPage("_fundForm.cshtml", name)
以下是_fundForm.cshtml的代码:

@{
    string name = PageData[0];
}

<form method="post" action="" id="subForm">
    <fieldset>
        @Html.ValidationSummary(true)
        <legend>Fund</legend>
        <p>
            @Html.Label("Name:", "name")
            @Html.TextBox("name", name)
            @Html.ValidationMessage("name", new { @class = "validation-error" })
        </p>
        <p>
            <input type="submit" name="submit" value="Save" />
        </p>
    </fieldset>
</form>
@{
字符串名称=页面数据[0];
}
@Html.ValidationSummary(true)
基金

@标签(“名称:”,“名称”)
@文本框(“名称”,名称)
@ValidationMessage(“name”,new{@class=“validation error”})

我遇到的问题是,当“name”出现错误时,不会显示验证错误。是否有特殊的方式在两个页面之间传递
ModelState


\u fundForm
将在Create.cshtml和Edit.cshtml之间共享。

ModelStateSystem.Web.WebPages.WebPages类的只读属性。它的支持字段是私有的ModelStateDictionary,在首次访问时初始化。我看不到任何方法可以强制ModelState跨页,除了通过反射(如问题中所示)执行此操作:

否则,您只需在调用中使用第三个参数,如下所示:

@RenderPage("_fundForm.cshtml", name, ModelState);
@{
    //In _fundForm.cshtml
    var ms = PageData[1];
    ModelState.Merge((ModelStateDictionary)ms);
}
实际上,页面名称后的第一个参数将成为新页面的模型,因此有足够的空间(即下一个参数)传递ModelState

在“_fundForm.cshtml”中,将调用页面接收到的ModelState与本地页面合并,如下所示:

@RenderPage("_fundForm.cshtml", name, ModelState);
@{
    //In _fundForm.cshtml
    var ms = PageData[1];
    ModelState.Merge((ModelStateDictionary)ms);
}

这就是我一直在寻找的答案。