2011-03-27 28 views
2

我想知道一個模式來做到這一點。我與方法1()如何發送消息到視圖ajax-like

method1(){ 
return View(); 

} 
[httpost] 
method1(string something){ 

    return View(object); 
} 

[httpost] 
method2(int? id){ 

    return redirectToaction("method1"); 
} 

View: 
<div> 
beginform(){ 
    textfield 
    submit button 
} 
</div> 
<div> 
if(viewbag.something != null){ 
    beginform("method2", "controller", new{id=number}){ 
    <span>@model.info</span> 
    submit button 
    } 
} 
</div> 

控制器和該顯示視圖此視圖具有這樣的形式的文本字段,並提交和這個調用方法1(),但與HTTPPOst和在同一視圖我顯示另一種形式,其將調用method2()我的問題是我如何顯示消息在視圖中?像「用戶已被刪除」而不必創建另一個視圖。有沒有另外一種方法在asp mvc中執行此操作,還是必須包含ajax?

我嘗試在method2中設置viewBag,但由於method2將方向redirectsaction重定向到某種方式,它不會保留,並且它不會顯示在視圖中。 謝謝!

+0

所以我猜你通過模糊的問題method1()呈現下拉列表的用戶和method2()是有關您的用戶的信息。你想要「user has been deleted」來顯示他們是否在method1()上選擇了一個已刪除的用戶(它仍然顯示出來)? – 2011-03-27 06:41:45

+0

或者method2()用於刪除用戶,並且您想要反饋用戶已被刪除? – 2011-03-27 06:42:28

+0

method2刪除用戶,我希望它在同一視圖中顯示一條消息,但想知道我是否可以在asp mvc上執行此操作,或者如果我必須向asp mvc添加ajax – bb2 2011-03-27 07:18:59

回答

3

你可以使用TempData的這是一個單一的重定向之間保留:

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

[HttpPost] 
public ActionResult method1(string something) 
{ 
    return View(something); 
} 

[HttpPost] 
publicActionResult method2(int? id) 
{ 
    TempData["message"] = "User has been deleted"; 
    return RedirectToAction("method1"); 
} 

,並在視圖中顯示的信息:

<div>@TempData["message"]</div> 

如果在TempData沒有消息它只會顯示一個空div。如果您不想要空格,您可以在視圖中進一步檢查TempData["message"] != null