使用ActionLink后如何从模型向控制器发送值?

时间:2015-03-03 19:44:42

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

我有这张桌子

 <% using(Html.BeginForm("ViewTwo","Order"))
    {  %>

<table id="Products" class="Products">
    <tr>
        <th>ProductId</th>
        <th>Productname</th>
        <th>Quantity</th>
        <th>UnitPrice</th>
    </tr>
    <% for(int i=0; i < Model.NorthOrderDetails.Count; i++)
       {
           %>
            <tr>
        <td><%: Html.Label(Model.NorthOrderDetails[i].ProductID.ToString()) %></td>
        <td><%: Html.Label(Model.NorthOrderDetails[i].ProductName) %> </td>
        <td><%: Html.TextBoxFor(m => m.NorthOrderDetails[i].Quantity) %></td>
        <td><%: Html.TextBoxFor(m => m.NorthOrderDetails[i].UnitPrice) %></td>
    <td>
        <%:  @Html.ActionLink("Go", "ViewTwo", "Order", new { firstval = Model.NorthOrderDetails[i].ProductID.ToString()}, null)%>
    </td></a></td>
    <td> <input type="submit"> </td> </tr>

         <% } %>
       </table>
     <% } %>

按下ActionLink后,如何从模型到控制器获取值?

1 个答案:

答案 0 :(得分:0)

我希望我能帮到你。您想要在Html.ActionLink(..)(请参阅MSDN)来电中访问设置为RouteValues的值吗?如果我是对的 - 这可以解释一下。

我设置了一个 HomeController

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
    public ActionResult SampleAction(int sampleValue)
    {
        Debug.WriteLine("SampleAction");
        Debug.WriteLine("\tsampleValue: " + sampleValue);

        return View("Index");
    }
}

之后我创建了一个相应的索引视图

@{
    ViewBag.Title = "Index";
}

<h2>Home</h2>

<!-- routeValues, HtmlAttributes -->
@Html.ActionLink("Click Me", "SampleAction", "Home",new { sampleValue = 1}, null)

Html页面

note the link text!

如您所见,我将sampleValue参数设置为我的routeValues。在我的控制器中,我可以访问此值,因为它自动匹配我的SampleAction 中的 sampleValue参数。

我打印出来用于演示目的。如果我误解了你 - 请告诉我。有关路由的更多详细信息,可以使用多篇文章(例如,请参阅Routing Basics

根据详细信息进行更新

如果要将特定数据添加到发送回服务器的模型,可以将附加数据添加到表单的routeValues。 (请参阅下面的演示代码 - 必须进行修改才能达到您的目的!)

<!-- only one submit button -->
@using (Html.BeginForm("actionName", "controllerName", new { sampleValue = 1 }, FormMethod.Post))
{
    for (int i = 0; i < 10; i++)
    {
    @Html.TextBoxFor(x => x.NorthOrderDetails[i].UnitPrice)
    }

    <input type="submit" />
}

<!-- each row is one form -->
@for (int i = 0; i < 10; i++)
{
    using (Html.BeginForm("actionName", "controllerName", new { sampleValue = 1 }, FormMethod.Post))
    {
        @Html.TextBoxFor(x => x.NorthOrderDetails[i].UnitPrice)
        <input type="submit" />
    }
}

如果您想将提交按钮的格式设置为链接,可以查看this corresponding SO question