我是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>
当我在文本框中输入值并按下按钮时,“创建操作”中的参数为空。此外,我还没有创建任何模型类,就像他们刚才显示的视频一样。请给我一些建议。
此致 桑杰塔
答案 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”]
绑定