Windows 2008 R2サーバー(IIS 7.5)でいくつかの従来のASP Webサイトを実行していて、単純なMVC3eコマースサイトを追加しました。問題は、フォームを使用して商品ページからショッピングカートに商品を追加しようとしたときです。Razor構文を使用すると、次のコードがあります。
@using (Html.BeginForm("Add", "Cart", FormMethod.Post, new { }))
{
@Html.HiddenFor(m => m.Id)
@Html.TextBoxFor(m => m.Quantity, new { size = "1" })
<input type="submit" value="Add to Cart"/>
}
public class AddToCartViewModel
{
public string Id { get; set; }
public int Quantity { get; set; }
}
[HttpPost]
public ActionResult Add(AddToCartViewModel cartItem)
{
// Code that adds the item to the cart
// Go back to the product page
return RedirectToAction("Model", "Product", new { id = cartItem.Id });
}
問題は、ModelIdとQuantityにフォームのデータが入力されていないことです。cartItemはnullではなく、このアクションが呼び出されています。このコードは、Visual Studio 2010で実行すると完全に機能するため、サーバーやIISの構成設定であると推測しています。奇妙なことに、ショッピングカート用の別のページがあり、ユーザーはカート内のアイテムの数量を更新できます。これは非常に効果的です。このページはビューモデルのリストを使用しているため、単純なリクエストが失敗する理由がわからないため、より複雑です。
フォームの代わりにActionLink(ハードコードされた数量)を使用すると機能します。
@Html.ActionLink("Add to cart", "Add", "Cart", new { Id = Model.Id, Quantity = 1}, new {})
アクションメソッドのシグネチャを文字列と整数を取るように変更しようとしましたが、数量がnullであるため、例外がスローされます。
ストローをつかんで、次の手順を実行して.NET 4.0が登録されていることを確認しましたが、問題ないようです。私は2.0.50727.0と、4.0.30319.0のx32およびx64バージョンを持っています
PhilHaackの指示に従ってアプリケーションをデプロイするBinも機能しませんでした
Visual Studioですべてが機能するため、アイデアがありません。同じ問題を抱えている他の投稿を見つけることができません。単純なものが足りないだけですか?また、アカウントコントローラーを介したログインがサーバーでも機能しないことに気づきました。エラーや検証の問題は表示されていません。デフォルトのメンバーシッププロバイダーを使用していますが、web.configは独自のデータベースを使用するように構成されています。新しいユーザーを登録でき、登録が成功するとその新しいユーザーがログインするため、接続は機能します。