我正在研究一个简单的项目。以下是代码。问题是我无法从视图中获取控制器的所有信息。所以我已经在Homecontroller中拥有书籍ID,名称和价格(来自单独的Productcontroller),我也可以查看它,我想在发帖请求时发布书籍数量。因此,当我尝试发布帖子请求并进行调试时,我只能看到数量,我看到书籍ID,名称和价格为空。
我不确定出了什么问题。任何帮助将非常感激。 谢谢!
1.Product.cs
public class Product
{
public int ProductID { get; set; }
public string ProductName { get; set; }
public decimal ProductPrice { get; set; }
public int Quantity { get; set; }
}
2.Cart.cshtml
@model DAL.Models.Product
@{
ViewBag.Title = "Purchase";
}
@ViewBag.bookName
<h2>Purchase</h2>
<div class="row">
<div class="col-md-3"></div>
<div class="col-md-6">
@using (Html.BeginForm("Cart", "Home", FormMethod.Post))
{
<div class="panel panel-primary">
<div class="panel-heading">Purchase Book</div>
<div class="panel-body">
<div>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.ProductName)
</dt>
<dd>
@Html.DisplayFor(model => model.ProductName)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ProductPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ProductPrice)
</dd>
</dl>
</div>
@Html.LabelFor(model => model.Quantity, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Quantity, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Quantity, "", new { @class = "text-danger" })
</div><br />
<div class="col-md-10">
<input type="submit" value="Submit" class="btn btn-default"/>
</div>
</div>
</div>
}
</div>
<div class="col-md-3"></div>
</div>
以下是截图:
答案 0 :(得分:1)
POST中只包含可编辑的值(您使用的是@ Html.EditorFor等)。要在POST中包含其他值,只需使用@ Html.HiddenFor()帮助程序。
例如:
@Html.HiddenFor(model => model.ProductID)
@Html.HiddenFor(model => model.ProductName)
@Html.HiddenFor(model => model.ProductPrice)
这些将被传回并在控制器中可用。
答案 1 :(得分:1)
嗨Marshall我希望你能从上面的doug knudsen回答得到解决方案,所以我想在此向您展示,Why DisplayFor does not post values to Action Method?
简答:DisplayFor不呈现属性的输入字段,而editorfor和hiddenfor呈现输入字段。这就是你没有在帖子中获得价值的原因。
希望它能帮助你理解更多。
由于
KARTHIK