我继承了一个MVC网站,并被要求将两个页面合并为一个。由于两个视图都有自己的视图模型,我认为不是将两个虚拟机推到一起,而是可以使用部分视图来显示,在本例中,是一个名为Clock_Detail的视图中的时钟组。但是,我需要让GroupId填充Clock Group的数据。
因此,很少使用部分视图我对如何使其工作感到困惑。
我创建了一个名为ERROR 1064 (42000) at line 27: You have an error in your SQL syntax; check
the manual that corresponds to your MySQL server version for the right
syntax to use near '*
FROM (
SELECT
testresults.hostname AS Hostname,
hostinfo.env A' at line 3
的新视图,只是从另一页复制并粘贴了一些基本代码,看看是否可以显示任何内容。
在我的ClockDetail控制器中,我添加了以下内容。
_ClockGroup.cshtml
这是_ClockGroup.cshtml
public PartialViewResult ClockGroup(int groupId)
{
ClockGroupViewModel vm = DAL.GetClockGroupDetail(groupId);
return PartialView(vm);
}
这是来自clock_detail.cshtml视图。它使用以下模型,然后我将Partial添加到此视图中。
@model site.Models.ViewModels.ClockGroupViewModel
<div class="form-group">
@Html.LabelFor(m => m.GroupId, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(m => m.GroupId, new { htmlAttributes = new { @class = "form-control", disabled = "disabled", @readonly = "readonly" } })
</div>
<div class="form-group">
@Html.LabelFor(m => m.GroupName, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(m => m.GroupName, new { htmlAttributes = new { @class = "form-control", autofocus = "autofocus" } })
@Html.ValidationMessageFor(m => m.GroupName, "", new { @class = "text-danger" })
</div>
当然我得到一个错误,模型传递了字典类型@model site.Models.ViewModels.ClockDetailViewModel
@Html.Partial("_ClockGroup")
,但字典需要一个时间“site.Models.ViewModels.ClockDetailViewModel”
的模型项。
我是否需要继续将两个ViewModel组合在一起并使用单个ViewModel?
答案 0 :(得分:1)
如果未指定对象作为第二个参数:
@Html.Partial("_ClockGroup")
它会自动传递ClockDetailViewModel
您的部分需要输入ClockGroupViewModel
修复将在您调用partial传递ClockGroupViewModel
对象的ClockDetailViewModel
属性时:
@Html.Partial("_ClockGroup", Model.ClockGroupViewModelProperty)
如果您的ClockDetailViewModel
类没有ClockGroupViewModel
属性,则需要将其添加到ViewModel并填充数据。