1
我是MVC的新手。我正在拍賣申請。在拍賣網站上,應該有一個拍賣表格。我通過拍賣參數控制器C#MVC發佈表單不會將ID從視圖傳遞到控制器
我的模型的一個問題:
public class Auctions
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string title { get; set; }
(..) some other fields
public List<Bid> bids = new List<Bid>();
}
public class BiddingViewModel
{
public Auctions auctionToSend { get; set; }
public double bid { get; set; }
}
我的觀點:
@model BiddingViewModel
@using(Html.BeginForm("CreateBid", "Auction", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.HiddenFor(model=>model.auctionToSend)
@Html.EditorFor(model => model.bid)
<input type="submit" value="Make it work" />
}
和我的控制器:
[AllowAnonymous]
public ActionResult AuctionPage(int id)
{
var tmp = _context.Auctions.FirstOrDefault(i => i.ID == id);
BiddingViewModel bvm = new BiddingViewModel
{
auctionToSend = tmp,
bid = -1
};
return View(bvm);
}
[Authorize]
[HttpPost]
public async Task<ActionResult> CreateBid(BiddingViewModel bvm)
{
//After filling the form from view, the bvm.auctionToSend is null, whereas the bvm.bid value is visible
return RedirectToAction("AuctionList", "Auction");
}
我的問題是,拍賣數據(在視圖中完全可見)不會被髮送回控制器。我查了一下互聯網,它向我展示了一些命名衝突的解決方案,所以我確定命名是不同的,但是這並沒有解決我的問題。
你好,斯蒂芬,感謝您的回覆只是性能視圖模型。我有點困惑。我需要將拍賣從控制器傳遞到視圖(AuctionPage方法),因此在視圖我的模型中至少需要@model拍賣。那麼如何僅將這一對(auction.ID和bid)傳遞迴控制器? CreateBid函數應該使用哪些參數? – Simon
如果您只是使用'@ Html.HiddenFor(m => m.auctionToSend.ID)',那麼'bvm'的Auction'屬性將在POST方法中被初始化並且它的ID將被綁定(但是其他屬性'拍賣'將是'空') –
是啊!有效!非常感謝 - 只有一個問題。我認爲你的意思是我「不應該」使用視圖模型 - 所以如果我想從項目中刪除我的視圖模型並使用@model拍賣,我將如何將auction.ID和bid(用戶輸入)都傳遞給控制器? – Simon