将html.dropdownlist的当前值传递给Actionlink?

时间:2015-06-05 07:06:31

标签: javascript c# asp.net-mvc-4 razor view

是否可以将@Html.DropDownListFor当前值传递给操作链接?我想通过Sample操作将模板值传递给Create控制器。下面的代码不起作用,因为@Model.SurveyTemplate不返回任何值。是否需要JavaScript才能检索?请指导我。

下拉列表:

@Html.LabelFor(model => model.Survey_Template, "Survey Template")
                @Html.DropDownListFor(model => model.Survey_Template, new SelectList(
                  new List<Object>{
                       new { value = "Style1" , text = "Style1"  },
                       new { value = "Style2" , text = "Style2" },
                       new { value = "Style3" , text = "Style3"}
                    },
                  "value",
                  "text",
            0))

ActionLink的:

@Html.ActionLink("_", "Create", "Sample",
            new { template = @Model.Survey_Template },
            new { @id = "popup-link", @class = "classname2" })

1 个答案:

答案 0 :(得分:1)

您必须使用JavaScript执行此操作, razor语法仅在服务器端上被识别。这意味着当用户请求页面时将呈现@Model.Survey_Template,并且将具有默认值。

如果您选择使用JavaScript,请记住您需要保存基本网址并根据所选内容向其附加参数。

此步骤将帮助您实现所需的结果:

  1. 在您的下拉列表中附加change个活动。
  2. 获取所选的value并构建新网址
  3. 替换操作(href
  4. 的网址(<a .. />

    注意:我没有编写代码,因为我希望你超越自己。

    我认为你试图通过form实现GET

    @using(Html.BeginForm("Create", "Sample", FormMethod.GET)){
        @Html.LabelFor(model => model.Survey_Template, "Survey Template")
        @Html.DropDownListFor(model => model.Survey_Template, new SelectList(
            new List<Object>{
               new { value = "Style1" , text = "Style1"  },
               new { value = "Style2" , text = "Style2" },
               new { value = "Style3" , text = "Style3"}
            },
            "value",
            "text",
        0))
    
        <input type="submit" value="_" class="classname2" id="popup-link" />
    }