在我的表单中,我可以向系统添加新产品(使用MVC 5),但我有一个问题。我有这段代码:
<div class="form-group">
@Html.LabelFor(model => model.ProductDescription, "Description", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.ProductDescription, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.ProductDescription, "", new { @class = "text-danger" })
</div>
</div>
如您所知,创建一个文本框,我想知道的是有一种方法可以修改现有代码以添加textarea而不是文本框吗?
修改
@Stephen Muecke
我创建了一个名为DisplayProductsViewModel的视图模型,它看起来像这样:
using AccessorizeForLess.Data;
namespace AccessorizeForLess.ViewModels
{
public class DisplayProductsViewModel
{
public string Name { get; set; }
public string Price { get; set; }
public ProductImage Image { get; set; }
}
}
然后在我的控制器中我改变它看起来像这样:
private ApplicationDbContext db = new ApplicationDbContext();
// GET: /Products/
public ActionResult Index()
{
var products = db.Products.Include(p => p.ProductImage).ToList();
List<DisplayProductsViewModel> model = null;
foreach (Product pr in products)
{
model.Add(
new DisplayProductsViewModel()
{
Name = pr.ProductName,
Image = pr.ProductImage,
Price = String.Format("{0:C}", pr.ProductPrice)
});
}
return View(model.ToList());
}
但是当我运行它时模型始终为null。你能帮我解决这个问题,一旦我能够做到这一点,我就能更好地理解这一切。
修改
@Stephen Muecke
我根据您的建议修改了我的代码:
private ApplicationDbContext db = new ApplicationDbContext();
// GET: /Products/
public ActionResult Index()
{
var products = db.Products.Include(p => p.ProductImage);
List<DisplayProductsViewModel> model = products.Select(p => new DisplayProductsViewModel()
{
Name = p.ProductName,
Image = p.ProductImage,
Price = string.Format("{0:C}", p.ProductPrice) }).ToList();
return View(model);
}
现在没有任何回报。
答案 0 :(得分:3)
将strip
属性应用于您的媒体资源
[DataType(DataType.MultilineText)]
或使用
[DataType(DataType.MultilineText)]
public string Description { get; set; }