在我的 Controller 中,我有以下代码:
public ActionResult Index(int? videoId, int languageId = 0)
{
//Some code
}
然后在我的 .chtml 页面中我这样引用它:
@using (Html.BeginForm("Index", "VideoLanguage", FormMethod.Post))
{
@Html.Hidden("videoId", Model.VideoId)
@Html.Hidden("videoLanguageId", Model.SelectedLanguage.LanguageId)
<div>
@Html.DropDownListFor(model => model.SelectedLanguage.LanguageId, ViewData["LanguageId"] as SelectList)
</div>
<div>
<a href="@Url.Action("Index", "VideoLanguage",new { videoId = Model.VideoId, languageId = Model.SelectedLanguage.LanguageId })" class="linkbutton">Add Language</a>
</div>
... code keeps going
那么当我单击按钮时会发生什么,从下拉列表中为 LanguageId 选择的值未通过。原值为。
最佳答案
<a href="@Url.Action("Index", "VideoLanguage",new { videoId = Model.VideoId, languageId = Model.SelectedLanguage.LanguageId })" class="linkbutton">Add Language</a>
在页面加载时设置,因此 HTML 中的值将被硬编码。您需要做的是在 Javascript 中设置超链接参数或使用:
<input type="submit" value="Index" />
参见 How to pass a textbox value from view to a controller in MVC 4?
关于c# - Url.Action 没有将参数传递给索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17892180/