2017-09-22 61 views
1

我知道有很多關於這個問題,而不是在一個單一的一個我見過(我一直在尋找,現在兩個小時),我沒看到什麼在Razor視圖(.cshtml文件)寫在火中保存的模型對象的數據庫或對象是如何通過相關的控制器方法。發送模型對象從視圖控制器的方法ASP.NET MVC C#

所以我想作一個簡單的註冊頁面。我所創建的用戶模型,創建與模型,名爲Register.cshtml相關聯的圖,我通過具有一個註冊方法賬戶控制器訪問視圖:

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

我按照教程使用生成的默認代碼在爲用戶模型創建時在視圖中。

<input type="submit" value="Create" class="btn btn-default" /> 

,並指出,你應該在賬戶控制器的方法如下:

public ActionResult Register(User obj) 
    { 
     if (ModelState.IsValid) 
     { 
      DatabaseEntities db = new DatabaseEntities(); 
      db.Users.Add(obj); 
      db.SaveChanges(); 
     } 
     return View(obj); 
    } 

(其中DatabaseEntities是我的數據庫的名稱)

這是不行的,因爲,在運行該應用程序時,它說它不知道這兩種方法中的哪一種會觸發。

System.Web.Mvc.ActionResult上型類型Biblioteca.Controllers.AccountController System.Web.Mvc.ActionResult寄存器(Biblioteca.Models.User)寄存器()Biblioteca.Controllers.AccountController

這是我得到的錯誤。

我想重命名第二個方法 RegisterPost(用戶OBJ)的,但我不知道如何調用該方法的說法,因爲在Razor視圖,我不知道它是對象在提交表單時創建。

我可以用一個@ Html.ActionLink(),但我不知道如何發送的對象。 其實我嘗試添加一個onclick方法提交按鈕,如下:

onclick="location.href='@Url.Action("RegisterPost", "Account")'" 

但填寫表格,然後點擊提交按鈕後,沒有任何反應。沒有任何東西被插入數據庫。

我不知道現在該做什麼。請幫忙。

+0

嘗試在您的Register(User obj)方法中添加'[HttpPost]'屬性。這將告訴MVC的行動是對 – DiskJunky

回答

2

要擴大一點,嘗試上述第二操作方法加入[HttpPost]

[HttpPost] 
public ActionResult Register(User obj) 
{ 
    if (ModelState.IsValid) 
    { 
     DatabaseEntities db = new DatabaseEntities(); 
     db.Users.Add(obj); 
     db.SaveChanges(); 
    } 
    return View(obj); 
} 
+0

謝謝,我試過了,它的工作原理!^_ ^ –

3

添加屬性[HttpGet]的第一個動作和[HttpPost]到第二個動作:

[HttpGet] 
public ActionResult Register() 
{ 
    return View(); 
} 

[HttpPost] 
public ActionResult Register(User obj) 
{ 
    if (ModelState.IsValid) 
    { 
     DatabaseEntities db = new DatabaseEntities(); 
     db.Users.Add(obj); 
     db.SaveChanges(); 
    } 
    return View(obj); 
} 

你可以閱讀更多的MSDN

+0

謝謝你正確的,它的作品!我不敢相信 –

相關問題