Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC5-向控制器发送表单参数_C#_Razor_Asp.net Mvc 5 - Fatal编程技术网

C# MVC5-向控制器发送表单参数

C# MVC5-向控制器发送表单参数,c#,razor,asp.net-mvc-5,C#,Razor,Asp.net Mvc 5,我是个新手,所以如果我遗漏了一些明显的东西,我道歉 我正在尝试使用Html.BeginForm向控制器发送两个字符串值 以下是控制器代码(在“BlogsController”中): 我试图发送一个“隐藏”参数作为“类型”(以便识别用户正在执行的查询类型-在本例中,字符串是“k”)和一个“文本框”字符串作为“变量”。以下是Razor中的表单: @using (Html.BeginForm("BlogResult", "Blogs", FormMethod.Post)) { @Html.Hidden

我是个新手,所以如果我遗漏了一些明显的东西,我道歉

我正在尝试使用Html.BeginForm向控制器发送两个字符串值

以下是控制器代码(在“BlogsController”中):

我试图发送一个“隐藏”参数作为“类型”(以便识别用户正在执行的查询类型-在本例中,字符串是“k”)和一个“文本框”字符串作为“变量”。以下是Razor中的表单:

@using (Html.BeginForm("BlogResult", "Blogs", FormMethod.Post))
{
@Html.Hidden("type", "k")
@Html.TextBox("variable")
<input type="submit" name="Submit Keyword" />
}
@使用(Html.BeginForm(“blogsresult”、“Blogs”、FormMethod.Post))
{
@隐藏(“类型”,“k”)
@Html.TextBox(“变量”)
}
但是,当按下submit按钮时,它只会刷新当前页面,而不会调用适当的控制器


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

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

[Route("blog/{articleId}")]
public ActionResult GetArticle(int articleId) { ... }
可能在创建表单时,动态值仍然不存在(稍后创建)。
暂时尝试删除route属性,看看它是否有效

更改我的路线映射后,表单post现在可以根据需要工作

我使用的是:

routes.MapMvcAttributeRoutes();
为了定义属性路由,我决定注释掉它并恢复RouteConfig中的默认代码。然后表单将正确的数据发布到正确的操作方法。因此,这必须是我的自定义属性路由的一个问题


感谢您的建议和帮助。

您将哪个模型类绑定到视图?您使用的是模型吗?如果是这样的话,那么使用@Html.TextBoxFor()是您显示的用
[HttpPost]
修饰的方法吗?目前我在这部分中没有使用模型-我正在使用LINQ中的关键字与action方法(未显示)中的模型交互。我有其他针对不同类型搜索(即按年份或按作者)的操作链接,其中“type”变量返回不同的字母。我尝试过[HttpPost]方法,但似乎不起作用。如果我尝试:@using(Html.BeginForm(“blogsult”,“Blogs”,new{type=“y”,variable=“xxxx”},FormMethod.Post)),它确实可以工作,但是,当然,我正在发送静态数据……谢谢。我在没有路由映射的情况下尝试了它,不幸的是,它仍然无法使用action方法。您可以发布该视图产生的html吗?这是按下按钮前后的源代码:好的,显然它找不到正确的控制器和方法(form标记中的action属性为空)。你能发布完整的控制器吗?并尝试使用[HttpPost]attributeOk装饰您的操作,首先明确删除该路由属性。当你想为你的行动绘制一条特殊的路线时,你就把它放在这里,但这里不是这样。第二,我用你的代码做了一个测试,结果很好(没有Route属性)。
routes.MapMvcAttributeRoutes();