0
我正在嘗試允許用戶查看啤酒。鑑於基本模型:POST模型屬性到控制器而不使用隱藏的輸入?
public class User
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Beer
{
public int Id { get; set; }
public string Name { get; set; }
}
public class BeerReview
{
public int Id { get; set; }
public virtual Beer { get; set; }
public virtual User { get; set; }
public string Review { get; set; }
}
我有我使用以及視圖模型:
public class BeerReviewViewModel
{
public BeerReview Review { get; set; }
...
}
我有以下的控制器操作:
public ActionResult Review(int id)
{
var beer = // get beer by Id
BeerReviewViewModel model = new BeerReviewViewModel
{
BeerReview = new BeerReview
{
Beer = beer.First()
}
};
return View("Review", model);
}
[HttpPost]
public ActionResult Review(BeerReviewViewModel submission)
{
if(ModelState.IsValid)
{
// here is the problem
int id = submission.Review.Beer.Id;
}
}
在我看來,我爲用戶提供了一個簡單的表單來查看啤酒。的看法是這樣的:
@model MyNamespace.BeerReviewViewModel
<h2>Review Beer: @Model.Review.Beer.Name</h2>
@{
using(Html.BeginForm()){
<div>
@Html.TextAreaFor(b => b.Model.Review.Review)
</div>
<div>
<input type="submit" value="Post Review" />
</div>
}
}
很顯然,我沒有張貼有關啤酒本身的控制器任何東西,所以在BeerReviewViewModel啤酒對象總是空。我想知道是否自從表單提交之前在視圖中已經有了我的Beer對象,如果有辦法告訴表單在POST上發送這些數據。我試過在控制器上使用Bind [Prefix =「b」],但沒有運氣。我想我總是可以在BeerReviewViewModel中添加一個int,並從視圖向控制器發送一個隱藏的啤酒Id值(或者爲每個啤酒屬性發送一個隱藏值)。但是,這仍然對我來說似乎是黑客。任何意見,將不勝感激。
那麼,對於一個POST它將在有效載荷,但同樣的差異 – 2011-03-10 15:01:41