如何在mvc4中将文本框值传递给控制器

时间:2015-12-27 14:07:32

标签: asp.net-mvc asp.net-mvc-4

如何将此文本框上的值传递给controler。

在Index.cshtml文件中

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
</head>
<body>
    <form>
        <input type="text" id="test" name="test" />
        <input type="submit" value="Click" />
    </form>
</body>

在MyHomeControler文件中

public ActionResult Index(string test)
{
     string val = test;
     return View();
}

2 个答案:

答案 0 :(得分:2)

您正确传递了值。但是,您的表单实际上并不是指该操作。 (或任何操作。)您可以手动执行:

<form action="/MyHome/Index">

或者,理想情况下,使用HTML帮助程序:

@using (Html.BeginForm("Index", "MyHome"))
{
    <input type="text" id="test" name="test" />
    <input type="submit" value="Click" />
}

使用HTML帮助程序可让框架决定操作的正确路径,以防它以不同方式路由。

答案 1 :(得分:2)

  

首先,您需要按下“提交”类型。所以你的表格价值会是   提交给你的Action方法。

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

其次,您需要在Action方法中将模型添加为参数。

[HttpPost]
public ActionResult MyDemoForm(FormModel modelObj)
    {
       var strFname=modelObj.FirstName;
             return View();
    }
  

第三,如果你的控制器名称是“MyFormController”。你需要   将视图中Html.Beginform的参数更改为:

@using (Html.BeginForm("MyDemoForm", "MyForm", FormMethod.Post))
    {
    //your fields
    }

如果您的视图与Action方法的名称相同,即“MyDemoForm”,则无需在Html.BeginForm中添加任何参数。只是为了简单。像这样:

@using (Html.BeginForm())
{
//your fields
}