如何在MVC 5中将带有提交表单的部分视图设置为我的所有主视图?

时间:2019-02-23 07:06:55

标签: asp.net asp.net-mvc model-view-controller asp.net-mvc-5 partial-views

  

注意:我完整的以下代码正在运行。

     

我想添加我的局部视图(_Login.cshtml),以在我的所有视图(about.cshtmlcontact.cshtmlproduct.cshtml等上显示)

     

我的问题是,我该如何实现?因为,我的局部视图(_Login.cshtml)的标题标签带有模型名称(此模型属于Index.cshtml),如下所示

@using TestProject.Models
@model ViewSignInAndSignUp // this model refers only Index.cshtml
  

因此,如果我需要将此局部视图添加到另一个主要视图(@modelabout.cshtmlcontact.cshtml等)中,那是我的标头product.cshtml标签。 )

我有一个名为_Login.cshtml的视图(局部视图) 现在,它与Index.cshtml(主视图)

链接。

_Login.cshtml (部分视图)

@using TestProject.Models
@model ViewSignInAndSignUp 
@using (Html.BeginForm("ControllerSignIn", "Home"))
{
    @Html.TextBoxFor(si => si.getSignin.userName, new { @class = "form-control", @id = "txtLogin" })
    @Html.TextBoxFor(si => si.getSignin.password, new { @class = "form-control", @id = "txtPassword", @type = "password" })
    <input type="submit" class="btn btn-sm btn-primary btn-rounded" value="Login" id="btnLoginSubmit" />
}

模型

public class ViewSignInAndSignUp 
{
    public SignIn getSignin { get; set; }
    public ModelIndex ModelIndex{ get; set; }
}

Index.cshtml (主视图)

@using TestProject.Models
@model ViewSignInAndSignUp 

@using (Html.BeginForm("ControllerSignIn", "Home"))
{
    @Html.TextBoxFor(si => si.ModelIndex.Par1, new { @class = "form-control", @id = "txtPar1" })
    @Html.TextBoxFor(si => si.ModelIndex.Par1, new { @class = "form-control", @id = "txtPar1" })
    <input type="submit" class="btn btn-sm btn-primary btn-rounded" value="Submit" id="btnModelIndex" />
}

@Html.Partial("_Login")   //partialview

HomeController

[HttpPost]
public ActionResult ControllerSignIn()
{
    // some coding
    return RedirectToAction("Index", "Home");
}
  

所以如何将部分视图添加到其余所有视图(about.cshtmlcontact.cshtmlproduct.cshtml等)。

1 个答案:

答案 0 :(得分:0)

您可以更改模型结构以便更轻松地实现。假设您有一个ModelIndex,ModelContact等扩展的ModelBase。 ModelBase还具有ViewSignInAndSignUp作为属性。这样,如果您将类扩展到ModelBase,则可以在任意位置添加局部视图。如果所有页面都将其包含在MasterLayout中,将会更好。

public class ModelBase
{
    public ViewSignInAndSignUp ViewSignInAndSignUp { get; set; }
}

public class ModelIndex : ModelBase
{
    //ModelIndex properties
}

然后,在您的视图中,您可以像这样使用:

@Html.Partial("_Login", Model.ViewSignInAndSignUp)

更好的做法是在MasterLayout中一次使用此@ Html.Partial而不是所有特定的视图。