我有一个正常工作的Ajax表单:
<div class="row">
<div class="col-sm-8 col-sm-offset-2 alert alert-info" id="result"></div>
<div class="col-sm-8 col-sm-offset-2">
<h4>Contact Us</h4>
@using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "result" }))
{
@Html.LabelFor(a=>a.Email)
@Html.EditorFor(a => a.Email)
@Html.ValidationMessageFor(a => a.Email)
@Html.LabelFor(a=>a.Name)
@Html.EditorFor(a => a.Name)
@Html.ValidationMessageFor(a => a.Name)
@Html.LabelFor(a=>a.Phone)
@Html.EditorFor(a => a.Phone)
@Html.ValidationMessageFor(a => a.Phone)
@Html.LabelFor(a=>a.Message)
@Html.EditorFor(a => a.Message)
@Html.ValidationMessageFor(a => a.Message)
<input type="submit" class="btn btn-primary" value="Send Message" />
}
</div>
但是,我希望将其设置为警报的结果div始终默认显示。如何使其仅在具有内部文本时显示?是否有类似@if(AjaxResult != null) { <div>...</div> }
的东西?
我怀疑只能在View中解决此问题,但出于完整性考虑,我在下面包括了我的Controller代码:
[HttpPost]
public ActionResult Index(ContactUsViewModel model)
{
var fromAddress = new MailAddress("X", "X");
var toAddress = new MailAddress("X", "X");
string fromPassword = "X";
string subject = "GN Query";
string body = model.Message;
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
return Content("Your message has been received and we will respond within 24-48 hours.", "text/html");
}
答案 0 :(得分:0)
您可以使用html创建局部视图调用_alert
<div class="col-sm-8 col-sm-offset-2 alert alert-info" id="result">
Your message has been received and we will respond within 24-48 hours.
</div>
然后在您的视图中可以设置一个容器div,当ajax调用完成时将在其中显示它:
<div id="messageContainer">
</div>
现在您的操作应该返回该局部视图,并且您可以在视图中使用布尔值来决定是否渲染:
@model System.Boolean
@if(Model)
{
<div class="col-sm-8 col-sm-offset-2 alert alert-info" id="result">
Your message has been received and we will respond within 24-48 hours.
</div>
}
您的控制器操作将决定操作是否成功并显示消息或不显示消息:
bool isSuccess = true; // your logic to set this flag
............
............
{
smtp.Send(message);
}
return PartialView("_alert.cshtml",isSuccess );
在主视图中,您将拥有:
<div id="messageContainer">
</div>
@using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "messageContainer" }))
希望有帮助。