2016-03-16 150 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」]

相關問題