如何从视图值传递给控制器​​在ASP.NET MVC 3(剃刀)?(How to pass valu

2019-07-29 04:30发布

我在数据库中的表:

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

Answer 1:

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
}


Answer 2:

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

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

第一个参数产品链接文本。 “深”是行动调用当前控制器上的名称。 第三个参数是对象的类型。 这第三个参数应该是相同类型的深层作用的参数,你应该使用下一个符号传递数据

@ Html.ActionLink(项目, “深”,新的{idItem = item.IdMusic,富= “酒吧”})

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

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

希望这有助于兹拉蒂博尔



文章来源: How to pass values from view to controller in ASP.NET MVC 3 (Razor)?