我有2个型号:
public class Person
{
public int PersonID { get; set; }
public string PersonName { get; set; }
}
public class Order
{
public int OrderID { get; set; }
public int TotalSum { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想在SINGLE视图中编辑BOTH类的对象,所以我需要这样的东西:
@model _try2models.Models.Person
@model _try2models.Models.Order
@using(Html.BeginForm())
{
@Html.EditorFor(x => x.PersonID)
@Html.EditorFor(x => x.PersonName)
@Html.EditorFor(x=>x.OrderID)
@Html.EditorFor(x => x.TotalSum)
}
Run Code Online (Sandbox Code Playgroud)
当然,这不起作用:.cshtml文件中只允许一个"模型"语句.可能有一些解决方法吗?
根据我的理解Html.RenderPartial,ASP.NET MVC版本HTML.RenderAction中Microsoft.Web.Mvc.ViewExtensions包含的内容与MVC Futures中包含的内容之间存在很大差异.
在我的应用程序中,我有许多页面由许多"小部件"(类型)组成,每个小部件都有自己的特定功能.
在我看来,使用该RenderAction方法更合理,因为每个小部件都有一个专用控制器,负责获取不同的数据并呈现专用视图(而不是只有一个控制器和一个唯一的视图模型传递给RenderPartial帮助器来呈现视图).
从测试中我已经完成了一个指向控制器中的Create动作方法的表单,如:
<% using (Html.BeginForm("Create", "Message", FormMethod.Post,
new { id = "messageCreateForm" })) {%>
Run Code Online (Sandbox Code Playgroud)
并用它来调用它
<% Html.RenderPartial("MessageForm",new MessageDTO()); %>
Run Code Online (Sandbox Code Playgroud)
将正确呈现:
<form id="messageCreateForm" method="post" action="/Message/Create">
Run Code Online (Sandbox Code Playgroud)
但是使用相同的等价物RenderAction(因此MessageForm在控制器上使用动作方法来渲染视图)将无法正确渲染:
<% Html.RenderAction<MessageController>(m => m.MessageForm()); %>
Run Code Online (Sandbox Code Playgroud)
将呈现:
<form id="messageCreateForm" method="post" action="">
Run Code Online (Sandbox Code Playgroud)
请注意,该操作为空.
这是使用RenderAction帮助程序的正确方法吗?在这种情况下使用它是否正确?
更新:实际上将部分视图重命名为_MessageForm会正确地呈现表单.
我正在开展一个小项目,我们有一个工程师表,一个项目表和一个元素表.工程师被分配了多个元素,元素可以有多个项目.我只是想知道如何展示工程师所具有的所有元素.
目前,我创建了一个将工程师与元素相关联的表.看起来有点像这样:
[Engineer Elements]
[Engineer ID][Element ID]
[1] [2]
[1] [4]
[2] [2]
[2] [8]
Run Code Online (Sandbox Code Playgroud)
所以我确实有办法链接这两个表.能否让我更好地学习使用MVC将这些表连接在一起?
我是asp.net mvc的新手.与此参考此.我正在使用元组将两个模型发送到一个视图中.我正在创建两个表单和两个提交按钮; 但是服务器上的值会变为null
@model Tuple<DAL.Models.LoginModel, DAL.Models.ForgotPassword>
@{
ViewBag.Title = "Login";
}
@using (Html.BeginForm("Login", "User", FormMethod.Post, new { ReturnUrl = ViewBag.ReturnUrl }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<ol>
<li>
@Html.LabelFor(m => m.Item1.EmailID)
@Html.TextBoxFor(m => m.Item1.EmailID, new { @id = "txt_login_EmailID" })
@Html.ValidationMessageFor(m => m.Item1.EmailID)
</li>
<li>
@Html.LabelFor(m => m.Item1.Password)
@Html.PasswordFor(m => m.Item1.Password)
@Html.ValidationMessageFor(m => m.Item1.Password)
</li>
<li>
<input type="submit" value="Login" id="btn_login" />
@Html.CheckBoxFor(m => m.Item1.RememberMe)
@Html.LabelFor(m => m.Item1.RememberMe, new { @class = "checkbox" })
</li>
</ol>
</fieldset>
}
Run Code Online (Sandbox Code Playgroud)
这是同一页面中的另一种形式
@using …Run Code Online (Sandbox Code Playgroud) 我有一个像表单一样工作的视图,因此它加载一堆下拉列表并从ActionResult Index. 将所有数据输入表单后,我将使用Html.BeginForm("Create"调用 save 方法。的ActionResult Create(RequestForm model)。所以问题是我想使用两种模型,一种用于加载,一种用于保存数据。我现在正在做的是从 FormViewModel 和 RequestForm 模型中获取对象。
有一个更好的方法吗?
看法:
@model FormViewModel
@using (Html.BeginForm("Create", "RequestForm", FormMethod.Post))
{
@Html.ValidationSummary(true);
<div class="k-content">
<h4>* Country</h4>
@Html.TextBoxFor(x => x.CountryId, new { id = "ddlCountry", @class = "form-control" })
@Html.ValidationMessageFor(model => model.CountryId)
</div>
}
Run Code Online (Sandbox Code Playgroud)
窗体视图模型
[Required]
public int? CountryId { get; set; }
public List<CountryModel> ListOfCountries { get; set; }
Run Code Online (Sandbox Code Playgroud)
申请表模型
public class RequestForm
{
[Required]
public int? CountryId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
控制器
public …Run Code Online (Sandbox Code Playgroud) 我刚开始使用ASP.NET MVC 4开始新项目,我有疑问.
我如何在一个视图中使用多个模型(或ViewModel-s)?我通过Internet搜索,标准解决方案是"创建具有2个或更多属性的复杂视图模型",例如:
public class ComplexViewModel
{
public LoginModel LoginModel { get; set; }
public CartModel CartModel { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但是,例如,在每个页面中,我将至少有 2个模型 - LoginModel和另一个模型(取决于页面).那么,我需要在每个ViewModel中定义LoginModel吗?
PS:我正在使用ASP.NET MVC 4,Entity Framework 5.
是否可以在同一视图中使用多个视图模型?
我试图通过@model属性使用viewmodel
但是,如果我可以使用第二个viewModel,我会陷入困境,我将第二个放置在哪里?