2015-10-28 36 views
0

因此,我决定将拍卖行Web应用程序作为我的第一个asp.net mvc项目,但我无法弄清楚如何在属于不同控件的两个视图之间传递参数控制器。在第一种观点,AuctionHouseController的细节,我有:ASP.NET MVC在不同控制器的视图之间传递URL ID

<a class="btn btn-default" href="@Url.Action("Create", "Auctions", new { id = Model.ItemId })">Start Auction &raquo;</a> 

和URL:http://localhost:2142/AuctionHouse/Details/123

这里是详细方法:

public ActionResult Details(int id) 
    { 
     var item = _auctionhDbc.Items.Find(id); 
     return View(item); 
    } 

我想传递的ID部分URL - 按钮导向的视图中的“123” - 创建AuctionsController,其中包含:

<div class="form-group"> 
     @Html.LabelFor(model => model.Item.ItemId, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.Item.ItemId, new { htmlAttributes = new { @class = "form-control", @Value = " " } }) 
      @Html.ValidationMessageFor(model => model.Item.ItemId, "", new { @class = "text-danger" }) 
     </div> 
    </div> 

我想将“123”作为Html编辑器字段的默认值(@Value)。我怎样才能做到这一点?

+1

删除'@Value =“”'代码。如果'Item.ItemId'的值是'123',那么它会自动添加。您需要显示您的'Details(int ID)'方法 –

+0

@StephenMuecke public ActionResult Details(int id) { var item = _auctionhDbc.Items.Find(id); return View(item); } – CuriouS

+0

编辑你的问题(不在评论中)。但是你的评论中的代码似乎没有设置属性'Item.ItemId'的值(并且视图中的模型是什么?根据你所显示的你需要的'item.Item.ItemId = id;'没有多大意义 –

回答

1

假设您使用的是强类型视图,Create视图的模型在ItemID中的值将为123。问题是,您的型号为Items,但您正在尝试使用来代替model.Item.ItemID

这样,不是你的线

@Html.EditorFor(model => model.Item.ItemId, 
    new { htmlAttributes = new { @class = "form-control", @Value = " " } }) 

如果使用

@Html.EditorFor(model => model.ItemId, 
     new { htmlAttributes = new { @class = "form-control" } }) 

你应该已经有传递的值。确保你通过把使用strongly typed views

@model YourNameSpace.Items 

在视图的开始。

+0

太棒了! 如果我需要访问该项目的其他属性,例如Item.ItemName? – CuriouS

+0

,无论您的模型带有它,您可以以相同的方式访问,即'@ Html.EditorFor(m = > m.YourModelProperty)' –

+1

请考虑使用视图模型(这是一个自定义类),而不是你的'DbContext'类'Items'。这样你就会有更大的灵活性 –

相关问题