注意:我完整的以下代码正在运行。
我想添加我的局部视图(
_Login.cshtml
),以在我的所有视图(about.cshtml
,contact.cshtml
,product.cshtml
等上显示)我的问题是,我该如何实现?因为,我的局部视图(
_Login.cshtml
)的标题标签带有模型名称(此模型属于Index.cshtml
),如下所示
@using TestProject.Models
@model ViewSignInAndSignUp // this model refers only Index.cshtml
因此,如果我需要将此局部视图添加到另一个主要视图(
@model
,about.cshtml
,contact.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.cshtml
,contact.cshtml
,product.cshtml
等)。
答案 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而不是所有特定的视图。