从我的View中将所选值传递给控制器时遇到了一些麻烦。我不明白我需要如何传递价值,我一直在寻找无济于事的信息。这是我的代码
控制器[GET]
[HttpGet]
public ActionResult AddProduct()
{
ideaworktelekrik.Models.ProductModel newProduct = new Models.ProductModel();
newProduct.Categories = new SelectList( (from a in dbContext.Categories select new SelectListItem { Text = a.Category1, Value = a.ID.ToString() }),"Value","Text");
return View(newProduct);
}
查看:
<div class="form-group">
@Html.DropDownListFor(model => model.c_ID, Model.Categories)
</div>
型号:
public string Name {get;set;}
public int c_ID { get; set; }
public Guid _ID {get;set;}
public string imageurl {get;set;}
public SelectList Categories {get;set;}
public string CategorySelected { get; set; }
如果有可能,请让我知道这个过程背后的逻辑,因为这个问题的主要目标是学习如何传递价值观(让他们开始工作)。
为了让您知道这个项目是什么,这是一个添加产品页面,用户有几个文本框输入产品信息,最后选择产品的类别(下拉列表),因此模型中的其他变量。
谢谢你们。
答案 0 :(得分:0)
创建选择列表时,需要告诉它所选的值,见下文:
newProduct.Categories = new SelectList( items: (from a in dbContext.Categories select new SelectListItem { Text = a.Category1, Value = a.ID.ToString() })
selectedValue: newProduct.c_ID)
, "Value", "Text");
这是为了在进行get时设置它,如果你对帖子有问题,你可以提出你的表单和控制器发布方法,(我假设它会在模型时填充模型上的c_ID)发布)。
答案 1 :(得分:0)
将选定值传递给控制器时遇到了一些麻烦 从我的观点。
如果没有看到您的模型属性,代码的简单版本将是:
@using (Html.BeginForm())
{
<div class="form-group">
@Html.DropDownListFor(model => model.c_ID, Model.Categories)
</div>
// any other form fields here
<p>
<input type="submit" value="Submit" />
</p>
}
你的控制器后期行动将是:
[HttpPost]
public ActionResult AddProduct(ProductModel model)
{
// process your model data here
}
答案 2 :(得分:0)
感谢您的回答,基本上我对MVC的运作方式有了错误的理解。
我在Get actionMethod中填充selectList而不是在post actionMethod中填充,因此当帖子被执行时,它是下拉列表中的空参数。
我的selectList创建中也有一些错误的逻辑(感谢@Eric)以及我的视图(感谢@Eckert)
谢谢你们!