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 });
}
すべてが[OK]をコンパイル。しかし、実行数量が常にnullの場合、私はすでにintとstringの数量を同じ結果で試しています。
どのような助けもうまくいくでしょう。おかげさまで
ある
iは整数エラーがスローされる量が使用されている文字列として数量を試みた場合こんにちは、第二の点については、ヌルです。第三に、カートはバインドされたオブジェクトです。それはうまく動作します。そして紹介者はおそらくUrlReferrerですか?御時間ありがとうございます。 – Gabriel
私はまだコントローラのアクションの外にドメインオブジェクトをロードしません。次の試みは明示的なtype = "text"とvalue = ""を削除することです。 –
感謝!!!!今は修正されました...私はvalue = ""を削除しました。それはとても小さかったです:) – Gabriel