2017-04-10 25 views
0

我剛剛從朋友那裏得到一些MVC應用程序來幫助他解決這個問題,但這是我第一次使用MVC,我一直在使用C#allready已超過1年,但從未使用過ASP.NET MVC爲什麼有2種編輯方式和2種方法在MVC控制器中創建

我的問題是接下來,當我打開他正在用於編輯和添加新用戶的controller時,我看到有2個編輯方法和兩個CREATE方法,我很困惑爲什麼它是這樣的,這裏是唯一的創建方法的代碼:

public ActionResult CreateUser() 
     { 

      var model = new UserTypeNew() 
      { 
       Roles = new List<user_userroles>() 
      }; 


      List<roles> allRoles = RolesController.SelectAll(); 

      foreach (var item in allRoles) 
      { 
       user_userroles tempName = new user_userroles() 
       { 
        RoleID = item.RoleID, 
        roles = item 
       }; 
       model.Roles.Add(tempName); 
      } 
      return View(model); 
     } 

但同時又存在CREATEUSER方法,我很困惑,爲什麼後?我看不到他們每個人的目的..我可以看到他們是不同的,但有人可以解釋我爲什麼這樣,他想達到什麼(不幸的是,他現在不可用,所以我不能跟他說話這段代碼)。

[HttpPost] 
     public ActionResult CreateUser(User model) 
     { 
      if (ModelState.IsValid) 
      { 

       database_user newUser = new database_user() 
       { 
        UserName=model.UserName, 
        FirstName=model.FirstName, 
        LastName=model.LastName 

       }; 
       UserController.InsertNewUser(newUser); 

       // I deleted code about adding roles 


        return RedirectToAction("Index", "Users"); 

      } 

      return View(model); 
     } 

我能注意到的區別,而不是代碼,有[HttpPost]上述第二種方法,和我真的不知道他們爲什麼如此不同?以及爲什麼兩個同名的?

謝謝你們 乾杯

回答

2

的一個沒有HttpPost是一個GET請求。這是用戶導航到該頁面的時間。它返回一個視圖,可能包含用戶填寫的表單。

HttpPost用於用戶在頁面上提交表單時使用。它將發佈到相同的URL,但HTTP方法將不同(POST),因此它將被路由到標記爲HttpPost屬性的操作方法。

他們不要是同一個名字。你可以命名他們不同。在我曾經使用過的應用程序中,我們的GET方法是Edit,我們的POST方法是Update

+0

如果它們是不同的名稱,應該在CreateUser.chhtml視圖中更改任何內容或無關緊要? –

+0

假設您使用'@ Html.BeginForm'方法,表單文章需要具有應該發佈的ActionMethod的正確名稱。否則,如果您只是使用'

'標籤來完成,那麼它需要有正確的網址發佈。 – mason

相關問題