ASP.NET MVC在不同控制器的视图之间传递URL id

时间:2015-10-28 22:40:17

标签: c# asp.net .net asp.net-mvc

所以我决定将拍卖行Web应用程序作为我的第一个asp.net mvc项目,我无法弄清楚如何在属于不同控制器的两个视图之间传递参数。在第一个视图中,AuctionHouseController的详细信息,我有:

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

和一个网址:http://localhost:2142/AuctionHouse/Details/123

这是详细信息方法:

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

我想传递网址的ID部分 - &#34; 123&#34;到按钮所在的视图 - 创建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>

我想放置&#34; 123&#34;作为Html编辑器字段的默认值(@Value)。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

假设您使用的是强类型视图,Create视图的模型在ItemID中的值已经为123。问题是,您的模型属于Items类型,但您尝试将EditorFor用于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

在视图的开头。