我在数据库中的表:
http://i.stack.imgur.com/C7CWX.png
我这段代码(视图)显示无repitions在“音乐”的所有值:
@foreach (var item in Model.Select(m => m.music).Distinct())
{
<tr>
<td>
@Html.ActionLink(item, "Deep", ViewData["item"])
</td>
</tr>
}
结果:
Jazz
Disko
Rock
Metal
我想,当我按下“爵士”结果“数”,“柯克”等。如何做到这一点? 我想我可以从查看到控制器传递价值,但我不知道怎么在我的情况下做到这一点。 请帮我
在控制器(例如)动作:
public ActionResult Deep(string music)
{
var res = (from m in d.table where m.music == music select m);
return View(res);
}
your Actionlink isn't quite doing what you want. If you hover over the links generated I think each one will name a different controller!
http://msdn.microsoft.com/en-us/library/dd505070.aspx
instead look at this version
http://msdn.microsoft.com/en-us/library/dd493066.aspx
@Html.ActionLink(item, "Deep", "YourController", new {id= ViewData["item"]})
and a controller action like
public ActionResult Deep(int id)
{
//Do something
}
这是不可能的,从视图值传递给直接控制器。 当用户请求的Web服务器为你初始页面的Web服务器(ASP.NET)计算出要调用的动作。 该操作收集数据和发送数据(使用视图模型,ViewBag,ViewData的或TempData的),以用于呈现该视图。 在这种情况下渲染的过程,其中的数据转换为HTML(可以是任何东西真的CSS,JavaScript的,......在这个看起来的字节数组),这是发送给其解释为网页客户端(浏览器)。 用户看到你的链接,当他点击它,他将到Web服务器的新的请求,这个过程重复。
您正在创建的链接代码:@ Html.ActionLink(项目,“深”,计算机[“项目”])
第一个参数产品链接文本。 “深”是行动调用当前控制器上的名称。 第三个参数是对象的类型。 这第三个参数应该是相同类型的深层作用的参数,你应该使用下一个符号传递数据
@ Html.ActionLink(项目, “深”,新的{idItem = item.IdMusic,富= “酒吧”})
在前面的例子中的ASP MVC期待你的“深”行动有参数idItem和Foo。
有一点要注意的是,客户/用户正在对Web服务器的请求,他不能像你试图发送一个对象。 相反,你发送对象的唯一标识符(idMusic)和检索它在从数据库/缓存/会话请求。
希望这有助于兹拉蒂博尔