c# - Url.Action 没有将参数传递给索引

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

在我的 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/

相关文章:

asp.net-mvc - 我的 JSON 字符串在我的 Action 中应该是什么样子?

c# - MVC中如何使用多个路由

c# - 带有 Mysql 的 EF Core 没有将 BIT(1) 搭建为 bool 值

c# - Razor 试图显示带有重音符号的文本

c# - 在 C# 类中对属性进行排序

c# - Azure downloadtostreamasync 方法挂起

javascript - 将对象从 Javascript 传递到 MVC Controller

c# - 重构重复的 Lambda 表达式

c# - 为什么要在 url 中添加 # 字符?

c# - 将Knockout与MVC4结合使用 : Use a button to toggle columns in a table.