0
我遇到了麻烦,我需要一个每行都有一个窗体的webgrid,我实现了这一点,但是当我点击提交按钮时,控制器没有收到输入文本。MVC WebGrid中的一个窗体
这是视图的代码:
@grid.GetHtml(
tableStyle: "mGrid",
headerStyle: "head",
alternatingRowStyle: "alt",
rowStyle: "altRow",
columns: grid.Columns(
grid.Column(columnName: "Id", header: "Id", style: "prefix"),
grid.Column(columnName: "Trademark", header: "Marca", style: "trademark"),
grid.Column(columnName: "Price", header: "Precio", style: "price", format: @<text>@item.Price.ToString("N2")</text>),
grid.Column(format: (item) =>
{
System.Text.StringBuilder html = new System.Text.StringBuilder();
html.Append("<form action=\"/Cart/AddToCart\" method=\"get\">");
html.Append("<input type=\"text\" value=\"\" style=\"width:50px; text-align:center; \" name=\"quantity\" id=\"quantity\" />");
html.Append("<input type=\"submit\" value=\"Agregar\" class=\"btnAdd\" />");
html.Append("<input type=\"hidden\" name=\"productId\" value=\"" + item.Value.Id + "\"/>");
html.Append("<input type=\"hidden\" name=\"returnUrl\" value=\"" + Request.Url + "\"/>");
html.Append("</form>");
return new HtmlString(html.ToString());
}
)
)
)
而这是控制器的一部分:
public class CartController : Controller
{
private IDataRepository repository;
...
public RedirectToRouteResult AddToCart(Cart cart, int productId, int quantity, string returnURL)
{
Product product = repository.Products.FirstOrDefault(p => p.Id == productId);
if (product != null)
cart.AddItem(product, quantity);
return RedirectToAction("Index", new { returnURL });
}
一切编译确定。但是当执行数量总是为空时,我已经尝试了数量为int和具有相同结果的字符串。
任何帮助将是wellcome。 谢谢。
您好,约第二点,为空,当我试图量为字符串,当为整引发错误使用量。第三,购物车是绑定的对象,这工作正常。推荐人可能是UrlReferrer?谢谢你的时间。 – Gabriel 2012-01-04 18:18:01
我仍然不会加载控制器操作之外的域对象。接下来要尝试的是删除显式type =“text”和value =“”。 – 2012-01-04 18:20:52
谢谢!!!!现在它是固定的...我删除了值=“”,它的效果很好。它太小了...... :) – Gabriel 2012-01-04 18:25:11