2015-05-04 26 views
0

我对此很新,所以如果我错过了某些明显的东西,我很抱歉。MVC5 - 将形式参数发送给控制器的问题

我想发送两个字符串值到控制器使用Html.BeginForm。

这里的控制器代码(“BlogsController”内):

[Route("{type}/{variable}")] 
public ActionResult BlogResult(string type, string variable) 
{ 
} 

我试图发送一个“隐藏”参数作为“类型”(让我认识到什么查询的排序是由执行用户 - 在这种情况下字符串是'k')和'文本框'字符串作为'变量'。下面是剃刀形式:

@using (Html.BeginForm("BlogResult", "Blogs", FormMethod.Post)) 
{ 
@Html.Hidden("type", "k") 
@Html.TextBox("variable") 
<input type="submit" name="Submit Keyword" /> 
} 

然而,当提交按钮被按下,它只是似乎刷新当前页面并且不调用适当的控制器。

我已经通过各种网站彻底搜索,但我找不到满意的解决方案。因此,任何帮助将不胜感激。

+0

什么模型类你绑定到你的看法? –

+0

您使用的是模型吗?如果是这样,请使用@ Html.TextBoxFor() –

+1

您用[HttpPost]装饰过的方法? –

回答

0

问题应该在路由映射中。您应该使用它来指定动态路由。 ES:

[Route("blog/{articleId}")] 
public ActionResult GetArticle(int articleId) { ... } 

可能当您创建表单时,动态值仍然不存在(您稍后创建它们)。 尝试并现在删除路由属性,看看它是否工作。

+0

感谢。我试过了,没有路由映射,不幸的是,它仍然无法使用操作方法。 –

+0

你可以发布该视图产生的HTML吗? – Hellraiser

+0

这是按下按钮之前和之后的源代码:

0

表单发布现在可以在更改我的路由映射后按需要工作。

我所用:

routes.MapMvcAttributeRoutes(); 

定义属性的路由,所以我决定发表评论了这一点,在RouteConfig恢复默认代码。表单然后将正确的数据发布到正确的操作方法。因此,这必须是我的定制属性路线的问题。

感谢您的所有建议和帮助。

相关问题