gpt4 book ai didi

asp.net-mvc - 在不使用 ViewModel 对象的情况下,Razor View 是否可以拥有多个模型?

转载 作者:行者123 更新时间:2023-12-02 12:23:23 25 4
gpt4 key购买 nike

@model MyMVC.Models.MyMVC.MyModel

@{
ViewBag.Title = "Index";
}

我问这个问题的原因是在 MVC 中我们可以有多个表单,所以我想为每个表单都有一个模型。但是当我尝试在 View 顶部添加另一个模型时,它显示错误。我知道我们可以使用 ViewModel ,其中包含 model1 和 model2 ,但这不是我要问的问题。

我只是想知道有什么方法可以将 2 个模型放入 1 个 View 中。

更新:

例如,我希望在我的 View 中有 2 个表单,因此对于每个表单,我希望有一个单独的模型。

更新2谢谢大家的回复。我现在知道 MVC 仅支持一个 View 上的一个模型。你们认为这是 MVC 的缺点吗?为什么或为什么不?(还没有人回答...为什么?)

你们的答案很相似,所以我什至不知道应该设置哪一个作为答案。

最佳答案

您应该对其他模型使用一些 prtialviews。您有主视图和主模型。在该 View 内部,您可以有一些带有模型和验证的部分 View 。

--------------------------------------编辑:

正如其他人所说,最好使用 View 模型并将模型相互组合。但正如您所希望的,我在我的 Github 帐户上为您创建了一个示例项目:

https://github.com/bahman616/ASPNET_MVC_multiple_models_in_a_view_with_partialview.git

这是该项目的简化代码:

这里有两个模型:

public partial class Person
{
public int ID { get; set; }
[Required]
public string Name { get; set; }
}
public partial class Company
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
}

我想在一个 View 中创建两个 View ,所以这是父 View :

@model ASP_NET_MVC_Multiple_Models_In_A_View.Models.Person

@{
ViewBag.Title = "Create";
}

<h2>Create</h2>

@using (Html.BeginForm("Create","Person")) {
@Html.ValidationSummary(true)

<fieldset>
<legend>Person</legend>

<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>

<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}

<div>
@Html.ActionLink("Back to List", "Index")
</div>

@{Html.RenderAction("_CompanyCreate", "Company");}

@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}

这是部分 View :

@model ASP_NET_MVC_Multiple_Models_In_A_View.Models.Company

<script src="~/Scripts/jquery-1.7.1.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

@using (Html.BeginForm("_CompanyCreate","Company")) {
@Html.ValidationSummary(true)

<fieldset>
<legend>Company</legend>

<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>

<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}

<div>
@Html.ActionLink("Back to List", "Index")
</div>

关于asp.net-mvc - 在不使用 ViewModel 对象的情况下,Razor View 是否可以拥有多个模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14516174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com