2012-04-29 148 views
0

我有这个表中的数据库:如何从视图值传递给控制器​​在ASP.NET MVC 3(剃刀)?

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); 
    } 

回答

0

您的ActionLink倒不做你想要什么。如果你将鼠标悬停在生成的链接上,我认为每个人都会命名一个不同的控制器!

http://msdn.microsoft.com/en-us/library/dd505070.aspx

代替看这个版本

http://msdn.microsoft.com/en-us/library/dd493066.aspx

@Html.ActionLink(item, "Deep", "YourController", new {id= ViewData["item"]}) 

和类似

public ActionResult Deep(int id) 
{ 
    //Do something 
} 
+0

它也不清楚什么在你的可视数据,你可能需要新的{ID =项目}并在控制器深(字符串ID)字符串类型 – Andiih

+0

我做像你说的,但所有相同的我有错误。在控制器: var res =(从m在d.table其中m.music == id选择m); :@ Html.ActionLink(item,“Deep”,“Home”,new {id = item})。我做错了什么?? – user

+0

那么......控制器有什么错误。编译还是运行时?如果运行时,id等的值是什么等 – Andiih

0

控制器操作是不可能的,从视图到控制器传递值直。当用户向您请求Web服务器时,初始页面Web服务器(ASP.NET)会指出要调用的操作。该操作收集数据并将该数据(使用视图模型,ViewBag,ViewData或TempData)发送到视图进行渲染。在这种情况下渲染的过程,其中的数据转换为HTML(可以是任何东西真的CSS,JavaScript的,......在这个看起来的字节数组),这是发送给其解释为网页客户端(浏览器)。用户看到你的链接,当他点击它时,他会向Web服务器发出新的请求,并重复此过程。

您正在创建的链接代码: @ Html.ActionLink(项目, “深”,计算机[ “项目”])

第一个参数产品链接文本。 “Deep”是在当前控制器上调用的动作的名称。第三个参数是类型对象。第三个参数应该与Deep动作中的参数类型相同,并且您应该使用下一个表示法来传递数据

@ Html.ActionLink(item,“Deep”,new {idItem = item.IdMusic,foo =“巴”})

在前面的例子中的ASP MVC期待你的‘深’行动有参数idItem和Foo。

有一点要注意的是,客户/用户正在对Web服务器的请求,他不能像你试图发送一个对象。而是发送对象的唯一标识符(idMusic),并根据数据库/缓存/会话的请求检索它。

希望这有助于 兹拉蒂博尔

+0

Thanx,但我不能使用你的例子=((( – user

相关问题