0

我使用扩展方法并编写了一个下拉列表,现在我想从视图中获取选定的值并传递给控制器​​。怎么办?

public static MvcHtmlString DayDropDownCalender(this HtmlHelper helper)
{        
    TagBuilder daydropdown = new TagBuilder("select");

    for (int i = 1; i <= 31; ++i)
    {
        var option = new TagBuilder("option");
        option.SetInnerText(i.ToString());
        option.MergeAttribute("value", i.ToString());
        daydropdown.InnerHtml += option.ToString();
    }

    return MvcHtmlString.Create(daydropdown.ToString(TagRenderMode.Normal));
}
4

1 回答 1

1

你应该给你的<select>元素一个name属性:

TagBuilder daydropdown = new TagBuilder("select");
daydropdown.Attributes["name"] = "day";

然后您的[HttpPost]控制器操作可以简单地将其作为参数:

[HttpPost]
public ActionResult Index(string day)
{
    ... the day parameter will contain the selected value
}

或者,如果您想向控制器操作传递的不仅仅是一个简单的标量值,您只需设计一个包含所有所需信息的视图模型:

public class MyViewModel
{
    public string Day { get; set; }
    public string Month { get; set; }
    public string Year { get; set; }
    ...
}

您的控制器将采取的行动:

[HttpPost]
public ActionResult Index(MyViewModel model)
{
    ...
}
于 2013-07-20T09:24:16.297 回答