C#Razor Helper方法显示页面内的页面

时间:2013-12-09 22:14:39

标签: c# asp.net-mvc razor master-pages

我正在创建一个Razor联系表单,除了显示“成功消息”外,一切正常。我正在调用一个帮助器方法DisplayCompletionMessage()。我有一个标题和段落。调用此方法时会显示消息,但就像我在我所在的页面中放置一个完整的新页面。这就像我有两个母版页,即使该方法只显示标题和段落。

if (!isPostBack)
{
    Session.Remove(ContactFormModel.SessionKey);
    @RenderForm(formModel)
}
else
{
    if (Session[ContactFormModel.SessionKey] != null)
    {
        @DisplayResubmissionError()
        return;
    }

    formModel = new ContactFormModel(Request.Form);
    var errors = formModel.Validate();

    if (errors.Count > 0)
    {
        @DisplayErrors(errors)
        @RenderForm(formModel)
    }
    else
    {
        @DisplayCompletionMessage(formModel)
        @SendContactEmail(formModel)
    }
}

enter image description here

@helper DisplayCompletionMessage(ContactFormModel formModel)
{
    <h3>Thank You</h3>

    <p>
        Thank you, @formModel.Name, your message has been successfully submitted!
    </p>
}

1 个答案:

答案 0 :(得分:0)

如何使用TempData显示您的消息。

在您的控制器中,您在发送电子邮件后设置TempData

.... //other code in your controller
....
TempData["successMsg"] = "Thank you, " + User.Name + ", your message has been successfully submitted!";
....
....

在视图中,如果TempData不为null并显示它

,则检查它
@if(TempData["successMsg"] != null)
{
    <h3>Thank you</h3>
    <p>
        TempData["successMsg"].ToString()
    </p>
}