Asp.net mvc MVC模型为所有属性返回0
将模型从视图传递到控制器操作时,返回的所有属性都是0。请看图片附件。 在OrderController.cs中定义的操作Asp.net mvc MVC模型为所有属性返回0,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,将模型从视图传递到控制器操作时,返回的所有属性都是0。请看图片附件。 在OrderController.cs中定义的操作 [HttpPost] public ActionResult Update(Order_Detail m) { return View(); //OrderUpdateViewModel model = new OrderUpdateViewModel(); //model.hasError = true; //model.Title = m
[HttpPost]
public ActionResult Update(Order_Detail m)
{
return View();
//OrderUpdateViewModel model = new OrderUpdateViewModel();
//model.hasError = true;
//model.Title = m.OrderDetail.Title + " Edit Status";
}
查看文件Edit.cshtml:
@model ADO_Fan.Models.OrderDetailViewModel
@using (Html.BeginForm("Update", "Order", FormMethod.Post))
{
<div>
@Html.LabelFor(m => m.OrderDetail.OrderID) @Html.DisplayFor(m => m.OrderDetail.OrderID)<br />
@Html.LabelFor(m => m.OrderDetail.Product.ProductName) @Html.DisplayFor(m => m.OrderDetail.Product.ProductName)<br />
@Html.LabelFor(m => m.OrderDetail.UnitPrice) @Html.DisplayFor(m => m.OrderDetail.UnitPrice)<br />
@Html.LabelFor(m => m.OrderDetail.Quantity) @Html.TextBoxFor(m => m.OrderDetail.Quantity)<br />
@Html.LabelFor(m => m.OrderDetail.Discount) @Html.DisplayFor(m => m.OrderDetail.Discount)<br />
<input type="submit" value="Update" />
</div>
}
参考类中定义的订单详细信息
namespace NorthwindDAL
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Spatial;
[Table("Order Details")]
public partial class Order_Detail
{
[Key]
[Column(Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int OrderID { get; set; }
[Key]
[Column(Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int ProductID { get; set; }
[Column(TypeName = "money")]
public decimal UnitPrice { get; set; }
public short Quantity { get; set; }
public float Discount { get; set; }
public virtual Order Order { get; set; }
public virtual Product Product { get; set; }
}
}
如有任何建议,我们将不胜感激 您必须了解
LabelFor
和DisplayFor
是否只有单向行程意味着他们只会显示数据,而不会在提交时返回数据,因此您可以
TextBoxFor
用于返回数据,也可以使用HiddenFor
等
@model ADO_Fan.Models.OrderDetailViewModel
@using (Html.BeginForm("Update", "Order", FormMethod.Post))
{
@Html.HiddenFor(m => m.OrderDetail.OrderID);
@Html.HiddenFor(m => m.OrderDetail.Product.ProductName);
@Html.HiddenFor(m => m.OrderDetail.UnitPrice);
@Html.HiddenFor(m => m.OrderDetail.Quantity);
@Html.HiddenFor(m => m.OrderDetail.Discount);
<div>
@Html.LabelFor(m => m.OrderDetail.OrderID) @Html.DisplayFor(m => m.OrderDetail.OrderID)<br />
@Html.LabelFor(m => m.OrderDetail.Product.ProductName) @Html.DisplayFor(m => m.OrderDetail.Product.ProductName)<br />
@Html.LabelFor(m => m.OrderDetail.UnitPrice) @Html.DisplayFor(m => m.OrderDetail.UnitPrice)<br />
@Html.LabelFor(m => m.OrderDetail.Quantity) @Html.TextBoxFor(m => m.OrderDetail.Quantity)<br />
@Html.LabelFor(m => m.OrderDetail.Discount) @Html.DisplayFor(m => m.OrderDetail.Discount)<br />
<input type="submit" value="Update" />
</div>
}
@model ADO\u Fan.Models.OrderDetailViewModel
@使用(Html.BeginForm(“Update”、“Order”、FormMethod.Post))
{
@HiddenFor(m=>m.OrderDetail.OrderID);
@Html.HiddenFor(m=>m.OrderDetail.Product.ProductName);
@HiddenFor(m=>m.OrderDetail.UnitPrice);
@HiddenFor(m=>m.OrderDetail.Quantity);
@HiddenFor(m=>m.OrderDetail.Discount);
@LabelFor(m=>m.OrderDetail.OrderID)@Html.DisplayFor(m=>m.OrderDetail.OrderID)
@Html.LabelFor(m=>m.OrderDetail.Product.ProductName)@Html.DisplayFor(m=>m.OrderDetail.Product.ProductName)
@Html.LabelFor(m=>m.OrderDetail.UnitPrice)@Html.DisplayFor(m=>m.OrderDetail.UnitPrice)
@Html.LabelFor(m=>m.OrderDetail.Quantity)@Html.TextBoxFor(m=>m.OrderDetail.Quantity)
@LabelFor(m=>m.OrderDetail.Discount)@Html.DisplayFor(m=>m.OrderDetail.Discount)
}
或者您可以将
@Html.LabelFor
更改为@Html.TextBoxFor
您必须了解LabelFor
和DisplayFor
是否只有单向行程意味着他们在提交时只显示数据而不返回数据,因此您可以
TextBoxFor
用于返回数据,也可以使用HiddenFor
等
@model ADO_Fan.Models.OrderDetailViewModel
@using (Html.BeginForm("Update", "Order", FormMethod.Post))
{
@Html.HiddenFor(m => m.OrderDetail.OrderID);
@Html.HiddenFor(m => m.OrderDetail.Product.ProductName);
@Html.HiddenFor(m => m.OrderDetail.UnitPrice);
@Html.HiddenFor(m => m.OrderDetail.Quantity);
@Html.HiddenFor(m => m.OrderDetail.Discount);
<div>
@Html.LabelFor(m => m.OrderDetail.OrderID) @Html.DisplayFor(m => m.OrderDetail.OrderID)<br />
@Html.LabelFor(m => m.OrderDetail.Product.ProductName) @Html.DisplayFor(m => m.OrderDetail.Product.ProductName)<br />
@Html.LabelFor(m => m.OrderDetail.UnitPrice) @Html.DisplayFor(m => m.OrderDetail.UnitPrice)<br />
@Html.LabelFor(m => m.OrderDetail.Quantity) @Html.TextBoxFor(m => m.OrderDetail.Quantity)<br />
@Html.LabelFor(m => m.OrderDetail.Discount) @Html.DisplayFor(m => m.OrderDetail.Discount)<br />
<input type="submit" value="Update" />
</div>
}
@model ADO\u Fan.Models.OrderDetailViewModel
@使用(Html.BeginForm(“Update”、“Order”、FormMethod.Post))
{
@HiddenFor(m=>m.OrderDetail.OrderID);
@Html.HiddenFor(m=>m.OrderDetail.Product.ProductName);
@HiddenFor(m=>m.OrderDetail.UnitPrice);
@HiddenFor(m=>m.OrderDetail.Quantity);
@HiddenFor(m=>m.OrderDetail.Discount);
@LabelFor(m=>m.OrderDetail.OrderID)@Html.DisplayFor(m=>m.OrderDetail.OrderID)
@Html.LabelFor(m=>m.OrderDetail.Product.ProductName)@Html.DisplayFor(m=>m.OrderDetail.Product.ProductName)
@Html.LabelFor(m=>m.OrderDetail.UnitPrice)@Html.DisplayFor(m=>m.OrderDetail.UnitPrice)
@Html.LabelFor(m=>m.OrderDetail.Quantity)@Html.TextBoxFor(m=>m.OrderDetail.Quantity)
@LabelFor(m=>m.OrderDetail.Discount)@Html.DisplayFor(m=>m.OrderDetail.Discount)
}
或者,您可以将
@Html.LabelFor
更改为@Html.TextBoxFor
,因为除了OrderDetail.Quantity
之外,您没有为属性生成任何输入。(表单只回发成功表单控件的名称/值对,并且DisplayFor()
不生成表单控件)。并且视图中的模型是OrderDetailViewModel
,因此POST方法中的参数必须相同-public ActionResult Update(OrderDetailViewModel m)
-但视图模型不应包含数据模型属性-请参阅!这两个问题您都完全正确。因为除了OrderDetail.Quantity
之外,您没有为属性生成任何输入。(表单只回发成功表单控件的名称/值对,并且DisplayFor()
不生成表单控件)。并且视图中的模型是OrderDetailViewModel
,因此POST方法中的参数必须相同-public ActionResult Update(OrderDetailViewModel m)
-但视图模型不应包含数据模型属性-请参阅!你在这两个问题上都是绝对正确的。谢谢乌斯曼!关于Html.LabelFor和Html.TextBoxFor,您是对的。正如Stephen在上面指出的,我的POST操作中的参数类型也有问题。我的第一个MVC项目。谢谢你的意见!!!若答案有帮助,你们可以接受。如果你不知道怎么查这个谢谢乌斯曼!关于Html.LabelFor和Html.TextBoxFor,您是对的。正如Stephen在上面指出的,我的POST操作中的参数类型也有问题。我的第一个MVC项目。谢谢你的意见!!!若答案有帮助,你们可以接受。如果你不知道如何检查这个