简体   繁体   English

网址操作未将参数传递给索引

[英]Url.Action not passing parameter to index

In my controller I have the following code: 在我的控制器中,我有以下代码:

    public ActionResult Index(int? videoId, int languageId = 0)
        {

               //Some code 
        }

Then in my .chtml page I reference it like so: 然后在我的.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

So what happens when i click the button, the selected value for LanguageId from the drop down isnt passed. 因此,当我单击按钮时,从下拉列表中选择的LanguageId值不会传递。 The original value is. 原始值为。

<a href="@Url.Action("Index", "VideoLanguage",new { videoId = Model.VideoId, languageId = Model.SelectedLanguage.LanguageId })" class="linkbutton">Add Language</a>

Is set when the page loads, so the values in the HTML will be hardcoded in. What you need to do is either set the hyperlink parameters in Javascript OR use: 在页面加载时设置,因此HTML中的值将被硬编码在其中。您需要在Javascript中设置超链接参数或使用:

<input type="submit" value="Index" />

See How to pass a textbox value from view to a controller in MVC 4? 请参阅如何将文本框值从视图传递到MVC 4中的控制器?

try this: 尝试这个:

@using (Html.BeginForm("Index", "VideoLanguage", FormMethod.Post, new { videoId = Model.VideoId, languageId = Model.SelectedLanguage.LanguageId }))
{
  ....
}

You should pass your params to the @Html.BeginForm helper and just submit the form 您应该将参数传递给@ Html.BeginForm帮助器,然后提交表单

@using (Html.BeginForm("Index", "VideoLanguage", FormMethod.Post, new { videoId = Model.VideoId, languageId = Model.SelectedLanguage.LanguageId }))
{
     @Html.Hidden("videoId", Model.VideoId)
     @Html.Hidden("videoLanguageId", Model.SelectedLanguage.LanguageId)

    <div>
        @Html.DropDownListFor(model => model.SelectedLanguage.LanguageId, ViewData["LanguageId"] as SelectList)
    </div>
    <div>
       <input type="submit" value="Add Language"/>
    </div>

... code keeps going
}

in your Controller you also should have two methods GET and SET with the same name: 在您的Controller中,您还应该具有相同名称的两个方法GET和SET:

public ActionResult Index()
        {
//Here just get a view
        }

[HttpPost]
public ActionResult Index(int? videoId, int languageId = 0)
        {
 //Here code to save in database
        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM