2015-12-22 180 views
1

我正嘗試創建聯繫我們頁面,其中用戶填寫詳細信息並提交,並在底部顯示來自服務器的消息。Mvc查看渲染

我實施的方式是這樣的。

[HttpGet] 
public ActionResult ContactUs() 
{ 
    //Process the stuff 
    return View("~Views/Contact/Contact.cshtml", model) 
} 

現在當頁面加載時,它會觸及上面的方法並顯示包含頁眉和頁腳的佈局的表單。

一旦用戶提交形成它擊中以下方法

[HttpPost] 
public ActionResult ContactUs(ContactUs form) 
{ 
    //Process the stuff 

    View.Message="Thank you for your enquiry." 

    return View("~Views/Contact/Contact.cshtml", model) 
} 

它返回到同一頁但它不呈現體佈局甚至沒有頁眉或頁腳簡單地顯示輸出形式。

不知道我在那裏做錯了什麼,有沒有更好的方法?

感謝

+0

你確定你在遇到問題時有相同的代碼嗎? – Shyju

+0

模型對象是什麼? –

回答

0

我試圖解決這個問題。這個問題是因爲我使用的是sitecore cms,表單操作並沒有處理完整的工作流程,在我刪除操作後,它默認使用在cms中定義的操作方法並觸發cms工作流程。

0

基於上面的代碼,我相信你嘗試類似:

public class UxController : Controller 
{ 
    public ActionResult WithResponse(ActionResult result, string message) 
    { 
      PageResponse(message); 
      return result; 
    } 

    protected void PageResponse(string message) 
    { 
      TempData["Ux_Response"] = message; 
    } 
} 

這將是你的控制器,然後針對特定頁面的控制器,它看起來像:

public class HomeController : UxController 
{ 
    public ActionResult Index() 
    { 
      return View(); 
    } 

    public ActionResult SubmitForm(string message) 
    { 
      return WithResponse(RedirectToAction("Index"), "Thank you for feedback."); 
    } 
} 

然後在您的前端代碼,你會做以下幾點:

@if(TempData["Ux_Response"] != null) 
{ 
    <div>@TempData["Ux_Response"]</div> 
} 

<form action="/Home/SubmitForm" method="post"> 
    <input type="text" name="message" /> 
    <input type="submit" value="Submit" /> 
</form> 

很明顯,您可以通過更多功能來增強它。但是,您依賴Post,這會導致屏幕閃爍。所以更好的路線,可能是做Ajax,然後返回一個JsonResult。希望這可以幫助你。

0

它應該工作,如果你改變你的控制器/視圖像這樣。

控制器;

public ActionResult Contact(ContactModel model) 
    { 
     ViewBag.Message = "Your contact page."; 

     return View(model); 
    } 


    public ActionResult SaveContact(ContactModel model) 
    { 
     //process values in your model and then rest model 
     ContactModel.Message = "Thank you for contacting us"; //show thank you message 

     return RedirectToAction("Contact",model); 
    } 

查看;

@model MvcApplication1.Models.ContactModel 
@{ 
    ViewBag.Title = "Contact"; 
} 

@using (Html.BeginForm("SaveContact", "Home", Model, FormMethod.Post)) 
{ 
    @Html.DisplayFor(m => m.Message); 

    <button type="submit">Submit</button> 
}