加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-4 – ASP .NET MVC 4包含两个部分视图的视图,每个视

发布时间:2020-12-16 09:52:44 所属栏目:asp.Net 来源:网络整理
导读:在我的MVC 4应用程序中,我有一个索引视图.在此视图中,我有两个div标签,其中呈现部分视图.点击时有两个按钮使用jQuery在这两个div之间切换.部分视图的每个模型都是强类型的. 题: 如何将模型传递给部分视图? 如何处理部分视图的POST请求? 在POST动作方法中,
在我的MVC 4应用程序中,我有一个索引视图.在此视图中,我有两个div标签,其中呈现部分视图.点击时有两个按钮使用jQuery在这两个div之间切换.部分视图的每个模型都是强类型的.

题:

如何将模型传递给部分视图?
如何处理部分视图的POST请求?
在POST动作方法中,如果ModelState无效,我如何重新渲染知道ModelStae的视图?

部分视图是在这种情况下的方式吗?
有没有更好的方法来实现MVC 4?

任何帮助表示赞赏.

这是我尝试过的没有任何成功:

Index.cshtml

<div id="token">
   <!-- insert Token based PartialView -->
@{
    //Html.RenderPartial("_TokenPartial");
    Html.RenderAction("TokenBased");
}
<div id="credentials">
  <!-- insert Credentials based PartialView -->
@{
   //Html.RenderPartial("_CredentialPartial");
   Html.RenderAction("CredentialsBased");
}
</div>

我尝试使用HTML.RenderPartial(“_ partial”),但无法指定部分View所基于的模型.然后我尝试使用Html.RenderAction(“TokenBased”)并在此操作中返回部分视图,其中包含此View的模型实例:

CredentialController.cs

public ActionResult TokenBased(string token)
    {
        ...

        return View("_TokenPartial",new TokenModel);
    }

以下是部分视图:

TokenPartial.cshtml

@model TokenModel

    @using (Html.BeginForm("CreateAgreementToken","Credential"))
    {
        <div class="formscontent">
            @Html.LabelFor(x => x.Token) <br />
            @Html.TextBoxFor(x => x.Token,new {size = "44" })
            @Html.ValidationMessageFor(x => x.Token)
            <br />
            <br />

            @Html.LabelFor(x => x.Email) <br />
            @Html.TextBoxFor(x => x.Email,new {size = "30" })
            @Html.ValidationMessageFor(x => x.Email)
            <br />
            <br />

            @Html.CheckBoxFor(x => x.AcceptSubsTerms,new { value = "SubsTerms"})
            @Html.LabelFor(x => x.AcceptSubsTerms)
            @Html.ValidationMessageFor(x => x.AcceptSubsTerms)
            @Html.ActionLink("SubsTermsLinkText","Subscription",null,new {target = "_blank"})
            <br />
            <br />
        </div>
        <br />

        <input class="mainbutton" type="submit" value="CreateAgreement_btn_txt"/><br />

    }

这是POST动作方法:

[HttpPost]
    public ActionResult CreateAgreementToken(TokenModel model)
    {

        if (ModelState.IsValid)
        {
            // Create Agreement
            //
            //

            return RedirectToAction("Welcome");
        }

        // If we got this far,something failed,redisplay form
        ModelState.AddModelError("","The user credentials provided are incorrect.");

        // Where to redirect to.
        // How to re-render the Index view that's aware of the ModelState errors

        return RedirectToAction("Index");
    }

如何处理Controller操作方法,索引视图和部分视图之间的交互,就像在“正常”情况下,您有一个索引操作方法呈现索引视图,将其传递给模型实例.然后在Index POST操作方法中,如果验证失败,则通过调用Index视图重新显示表单,并将其传递给无效模型.

谢谢

解决方法

要将模型传递给部分模型,请使用@ Html.Partial(“SomeFile”,SomeModel);

我建议如果你有多个表单,你给他们每个不同的控制器动作.您可以使用@ Html.BeginForm指定控制器和操作参数.

Partials只是组织html的一种方式.一旦页面呈现,它们就没有上下文,所以我不会太在意它.

为了让您的视图了解模型状态中的错误,您需要将模型传递给它.而不是重定向到索引返回索引视图并将模型作为第二个参数传递.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读