2011-04-27 24 views
0

使用asp.net mvc,用戶更新他的個人資料。這是我的更新行爲看起來如何:行動完成後,您如何給予用戶反饋?

[HttpPost] 
    public ActionResult EditUser(string id, UserEditViewModel model) 
    { 
     Mapper.CreateMap<UserEditViewModel, SimpleUser>(); 
     var user = Mapper.Map<UserEditViewModel, SimpleUser>(model); 

     userService.EditUser(user); 

     //Re-populating the countries. 
     var countries = geoService.GetCountries(); 
     model.Countries = countries.Select(c => new SelectListItem { Text = c.Name, Value = c.CountryId.ToString() }); 


     return View(model); 
    } 

首先,我這樣做是正確的嗎?通過編寫兩次填充代碼的國家(GET中1個,此處1個)。

其次,我如何給用戶某種形式的反饋,他們已經成功地更新了他們的個人資料?

+0

只需在模型中添加一個標誌即可切換「更新成功」消息。或者可能是一個布爾和一個字符串,所以你也可以呈現某種錯誤信息。 – R0MANARMY 2011-04-27 01:36:14

回答

2

既然你已經創建了用戶編輯頁面的特定視圖模型(不錯的做法,順便說一句),我會實際添加的消息,因爲該視圖模型本身的屬性。畢竟,它存在專門爲您的視圖包含數據,所以爲什麼複雜的事情/添加不一致通過拋出一個鍵/值對ViewData?這是我至少看到它的方式。噢,順便說一句,如果你使用的是Automapper,而且看起來像你(另一個不錯的方法),你可以考慮將Mapper.CreateMap放在除動作本身以外的其他地方。那裏有一點點的費用。希望有所幫助。

+0

感謝您使用automapper提示,您是否可以更詳細地解釋如何從動作中移動它? – 2011-04-27 02:18:14

+0

@Lol coder:你可以移動你的Mapper。CreateMap'調用到構造函數中,這可能是最簡單的。沒有別的東西需要改變 - 所以你仍然可以繼續像調用Mapper.Map一樣。 – ataddeini 2011-04-27 02:40:43

1

是的,我們通常需要查詢兩次,第一次填入屏幕,第二次填充。您可以隨時緩存第一次檢索時的值,並使用回發操作中的緩存值重新填充屏幕。

在ViewData(MVC-2)或ViewBag(MVC-3)中設置您的消息並顯示給用戶。

+0

因此,像ViewData [「成功」] =真? – 2011-04-27 01:53:41

+0

@Lol編碼器 - 是的,這是一種方法,或'ViewData [「消息」] =「配置文件已更新」;',那麼你可以在屏幕上顯示內容。 – Leons 2011-04-27 01:59:18

1

您可以:

  • 重定向到包含「更新成功」有不同的看法消息
  • 重定向到「詳細信息」視圖(他們會理解和「看」,他們的更改已保存)
  • 通過ViewData/ViewBag將消息傳遞給視圖,然後該視圖可以顯示此消息。
    您甚至可以在佈局頁面中使用該邏輯,以便任何視圖都可以在屏幕頂部顯示消息或其他類似內容。
0

這可能是更好的爲您創造模型共同/輔助方法,這一切的東西,像:

private void SetupCountries() { 
     //Re-populating the countries. 
     var countries = geoService.GetCountries(); 
     model.Countries = countries.Select(c => new SelectListItem { Text = c.Name, Value = c.CountryId.ToString() }); 
    } 

然後在所有控制器你的行動,你可以叫它而無需再次輸入這些代碼。

public ActionResult EditUser(.... { 
    SetupCountries(); 
0

我只想用

TempData["StatusMessage"] = "Your messsaga" 

可以使用TempData的東西爲只需要到明年請求。

相關問題