繁体   English   中英

MVC部分视图和模型

[英]MVC Partial View and Models

我有一个带有以下代码的HomeController:

public ActionResult Index()
{
    IndexModel m = new IndexModel();
    m.Test = "someString";

    m.LoginModel = new ViewLoginModel();
    m.LoginModel.Test = "FromLogin";

    return View("Login", m);
}

在我的Index.cshtml中,我有这个:

@model IndexModel

//bunch of HTML

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

在_Login.cshtml中,这个:

@model ViewLoginModel

//bunch of HTML

@Html.LabelFor(model => model.Test)

基本上,我想要做的是在我的主页中为部分窗口(登录)设置一个单独的模型,这个模型可以是或不是ViewIndexModel的子模型(理想情况下甚至不应该存在)。 我正在尝试访问变量并在局部视图中编写/使用它们,但它不起作用 - 它显示了属性的名称。

在局部视图“_Login”中,intellisense也因某种原因(VS2013)不起作用,虽然@ Html.BeginForm和东西正在工作,但我无法访问模型的属性。

我做错了什么,我该如何解决这个问题?

另外,这两者有区别吗?

@Html.Partial("~/Views/Home/_Login.cshtml")
@Html.Partial("Login")

看来当我使用#2时,我的HomeController中正在调用“Login”功能,不知道为什么......

它显示属性名称的原因是因为您使用了用于显示属性名称的HTML帮助程序。

@Html.LabelFor(model => model.Test)

要简单地在模型中输出属性的值,可以使用此语法

@model.Test

如果你想能够编辑它(假设它是一个字符串),然后将它包装在TextBoxFor帮助器中

@Html.TextBoxFor(model => model.Test)

至于你的第二个问题,我认为没有视图的完全限定名称,路由引擎就会参与其中。 我没有对此进行测试,并且通常使用完全限定名称来从.NET获得额外的几毫秒速度,而不必尝试猜测我要求的视图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM