2016-03-16 151 views
0

我对MVC非常陌生,并且试图从为MVC提供的视频中学习。在其中一个视频中,我使用了Tempdata。在视频中,他们使用HTTPPOST显示了创建的操作结果,并将数据从文本框传递到控制器,然后使用Tempdata进行查看。我曾尝试过这样做。但我没有从文本框中获得价值,总是返回null。下面是我的代码,将文本框的值传递给MVC5中的ActionResult TempData

控制器如下,

 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> 

当我进入文本框的值并在“创建”操作中按下按钮ID参数为空。另外,我还没有创建任何模型类,就像他们刚刚在上面显示的代码中一样。请给我一些建议。

问候 桑杰塔

+1

你刚才错过了你的文本框的name属性。只需正确设置名称属性,使其与控制器的名称参数相匹配即可。 NAME = “名字”。 – drunkcoder

+0

是的,它帮助.. – Sangeetha

回答

0

,如果你没有使用任何模型与数据跨越发送,您应该为您的文本与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属性文本框

+0

是的,这帮助了我。 – Sangeetha

+0

欢迎您,但在mvc中,建议最大限度地使用模型/视图模型.. –

+0

是的,我会一样的.. – Sangeetha

0

当你从图通过使用输入典型值将值传递给控制器e =提交那么您必须设置名称属性为输入元素,那么您需要在方法参数中提及该名称。

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

注意:它只会与输入型工作=“提交”,也不会与输入类型=“按钮”

工作,你不需要绑定的TempData值与.ToString()。你可以直接绑定@TempData [“uname”]

相关问题