Asp.net mvc 从接收IEnemerable列表的视图传递id值

Asp.net mvc 从接收IEnemerable列表的视图传递id值,asp.net-mvc,asp.net-mvc-4,razor,Asp.net Mvc,Asp.net Mvc 4,Razor,我想从视图中传递id值。我正在使用Html.ActionLink属性。 我是这样表演的 @foreach (var item in Model) { <div class="grid_1_of_4 images_1_of_4"> <a href="preview.html"><img src="/@item.p_imageUrl" alt="" /></a> <h2>@item.p_nam

我想从视图中传递id值。我正在使用Html.ActionLink属性。 我是这样表演的

  @foreach (var item in Model)
{

    <div class="grid_1_of_4 images_1_of_4">

        <a href="preview.html"><img src="/@item.p_imageUrl" alt="" /></a>
        <h2>@item.p_name </h2>
        <div class="price-details">
            <div class="price-number">
                <p><span class="rupees">@item.p_price</span></p>
            </div>
            @Html.ActionLink("Add to Cart", "Mobiles", new { id = item.ProductId }, new { @class = "add" })
            <div class="clear"></div>
        </div>

    </div>
}
@foreach(模型中的变量项)
{
@项目p_名称
@项目p_价格

@ActionLink(“添加到购物车”、“手机”、新的{id=item.ProductId}、新的{@class=“Add”}) }

但这并不是发布它,而是在控制器中调用get action。如何解决这一问题,您可以使用可选参数功能将一个操作用于两件事,无需执行另一个操作:

public ActionResult Mobiles(int id=0) 
{ 
// id will be initialized 0 when no id passed to action
if(id > 0)
{

// if id is coming do something here

var q = from n in db.Mobiles 
        where n.ProductId == id
        select n;  

 return View(q);

}

else
{
 var q = from n in db.Mobiles 
         select n;             // id is not passed

 return View(q);
}


}

您试图链接到的控制器和操作的名称是什么?另外,该操作是否只需要POST请求?控制器名称为Products否我有两个名称相同的操作一个带有参数id另一个没有参数您可以显示您的操作吗?public ActionResult Mobiles(){var q=from n in db.Mobiles select n;return View(q);}[HttpPost]PublicActionResult手机(int-id){返回视图(id);}