我在Windows 2008 R2服務器(IIS 7.5)上運行一對經典的ASP網站,並添加了一個簡單的MVC3電子商務網站。問題是當我嘗試使用表單從產品頁面添加項目到購物車時。使用剃刀語法,我有以下代碼:MVC3 - 空值發佈到行動
@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和數量沒有被填充在表單中的數據。 cartItem不爲空,並且正在調用此操作。此代碼在通過Visual Studio 2010運行時運行良好,因此我猜測它是服務器和/或IIS配置設置。奇怪的是,我有另一個購物車的頁面,允許用戶更新他們的購物車中的物品數量,這非常有效。該頁面更復雜,因爲它在視圖模型中使用了一個列表,所以我看不出爲什麼我的簡單請求失敗。
使用ActionLink(具有硬編碼數量)而不是表單工作。
@Html.ActionLink("Add to cart", "Add", "Cart", new { Id = Model.Id, Quantity = 1}, new {})
我試着改變action方法的簽名來取一個字符串和一個int,但是因爲數量爲null而拋出一個異常。
抓住吸管,我跑了以下來確保.NET 4.0已經註冊,看起來很好。我有2.0.50727.0和部署應用4.0.30319.0
斌的X32和x64版本按Phil Haack's instructions沒有工作,要麼
我的想法,因爲一切都在Visual Studio中的作品,和我無法找到與此相同問題的其他帖子。我只是想念一些簡單的東西?此外,我只注意到通過帳戶控制器登錄也無法在服務器上工作。沒有顯示錯誤或驗證問題。我正在使用默認的成員資格提供程序,但web.config被配置爲使用我自己的數據庫。該連接起作用,因爲我可以註冊一個新用戶,並且新用戶在成功註冊時登錄。
@OmerAmsel是的,它的聲明和填充。該表單在頁面上具有正確的值。該表單位於強類型局部視圖中,其中'AddToCartViewModel'作爲其模型。我發佈的是部分視圖,只減去模型聲明。 – tehrustine 2012-07-09 18:26:57
調試操作方法並檢查請求,確保您的值位於實際的Post中,並且它們與模型中的屬性具有相同的確切名稱。 – 2012-07-09 18:27:48