簡體   English   中英

Mvc視圖渲染

[英]Mvc View rendering

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

我實現的方式是這樣的。

[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)
}

它返回到同一頁面,但它不呈現正文布局,即使頁眉或頁腳也不僅僅顯示輸出表單。

不知道我在哪里做錯了,有沒有更好的方法?

謝謝

根據上面的代碼,我相信您正在嘗試類似的事情:

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

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

那將是您的Controller,然后是該特定頁面的Controller,它看起來像:

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 希望這可以幫助您。

如果這樣更改控制器/視圖,它應該可以工作。

控制器;

    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>
}

我努力解決這個問題。 問題是因為我正在使用sitecore cms,因此表單操作沒有處理它的全部工作流程,所以在刪除操作后,它默認為在cms中定義並觸發cms工作流程的action方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM