2013-07-26 54 views
2

在我的控制,我有以下代码:Url.Action不传递参数指标

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值不会被传递。原始值是。

+0

你不这样做是正确的。你能在这里发布你的模型的代码吗?如果你这样做,我会告诉你如何以正确的方式做到这一点。 – ataravati

回答

1
<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?

+0

这个答案帮助我了解问题所在。谢谢。 –

0

试试这个:

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

你应该通过您的PARAMS到@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 
} 

在你的控制器,你也应该有两种方法获取和使用相同的名称设置:

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

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