将文本框值传递给MVC5中的ActionResult TempData

时间:2016-03-16 06:35:02

标签: c# asp.net-mvc

我是MVC的新手,并试图从MVC的视频中学习。在其中一个视频我已经使用了Tempdata。在视频中,他们显示了使用HTTPPOST创建的操作结果,并将数据从文本框传递到控制器,然后使用Tempdata进行查看。我试过这样做。但我没有从文本框获得价值,总是返回null。以下是我的代码,

控制器如下,

        public ActionResult Create()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Create(string name)
        {
            TempData["uname"] =name;
            return RedirectToAction("GetUser");
        }

        public ActionResult GetUser()
        {
            return View();
        }

查看以下创建,

@{
    ViewBag.Title = "Create";
}

<h2>Create New User</h2>
@using (Html.BeginForm())
{
    <div>
        <p>Enter your name : <input type="text" id="id" placeholder="Enter username"/></p>
        <p><input type="submit" id="btnSubmit" value="Create"/></p>
    </div>
}

查看GetUser,

@{
    ViewBag.Title = "GetUser";
}

<h2>GetUser</h2>

<div>
    <h3>Welcome @TempData["uname"].ToString()</h3>
</div>

当我在文本框中输入值并按下按钮时,“创建操作”中的参数为空。此外,我还没有创建任何模型类,就像他们刚才显示的视频一样。请给我一些建议。

此致 桑杰塔

2 个答案:

答案 0 :(得分:0)

如果您没有使用任何模型发送数据,则应该为文本框提供name属性,并且该name属性必须与控制器操作匹配,更改创建视图文本框如图所示

@using (Html.BeginForm())
{
    <div>
        <p>Enter your name : <input type="text" name="name" id="id" placeholder="Enter username"/></p>
        <p><input type="submit" id="btnSubmit" value="Create"/></p>
    </div>
}

我已将name属性添加到文本框

答案 1 :(得分:0)

当您使用输入类型=提交将值从视图传递到控制器时,您必须将 name 属性设置为输入元素,然后您需要提及该名称在方法参数

<input type="text" name="txtname" id="txtname" placeholder="Enter username"/>
<input type="submit" id="btnSubmit" value="Create"/>

注意:它只适用于输入类型=“提交”,它不适用于输入类型=“按钮”

您不需要使用.ToString()绑定 Tempdata 值。你可以直接用 @TempData [“uname”]

绑定