我有以下代码无法正常工作。我希望从控制器重新启动并使用警报显示控制器返回的值。
$('#change').dialog({
autoOpen: false,
width: 380,
buttons: {
"Close": function() {
$(this).dialog("close");
},
"Accept": function() {
var test = $("#ChangePasswordForm").submit();
alert(test);
}
}
});
在我的控制器中,我想返回一个字符串
[AcceptVerbs(HttpVerbs.Post)]
public string ChangePassword(string Name)
{
var msg = "Cool!";
if (name != null)
return msg;
}
我该怎么做?
答案 0 :(得分:1)
您的控制器需要返回一个派生自ActionResult的类型。
如果要显示简单的确认消息,可以将其添加到ViewData包中,如下所示:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult ChangePassword(string name)
{
if (!string.IsNullOrEmpty(name))
{
ViewData["msg"] = "Cool";
}
return View();
}
然后,在您的视图中,检查值的存在,并显示它是否存在:
<% if(ViewData["msg"] != null) { %>
<script type="text/javascript">alert('<%= ViewData["msg"].ToString() %>')</script>
<%} %>
答案 1 :(得分:1)
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult ChangePassword(string Name)
{
var msg = "Cool!";
if (name != null)
{
return Content(msg, "text/plain");
}
else
{
return Content("Error...", "text/plain");
}
}
答案 2 :(得分:1)
首先,我假设您正在使用ajax表单。我还假设你有一个或什么东西可以放入你的文字。您所要做的就是将UpdateTargetId设置为指向要使用文本更新的元素的id
<%using (Ajax.Form("ChangePasswordForm", new AjaxOptions { UpdateTargetId = "result" })) %>
[HttpPost]
public ContentResult ChangePassword(string s)
{
var msg = "Cool!";
if ( s != null ? return Content(msg, "text/plain") : return Content("An error has occured", "text/plain") );
}
答案 3 :(得分:0)
不要提交表格,因为它会执行回发并导致删除对话框。
而是向Controller Action执行AJAX帖子并返回包含数据的JsonResult。
从Ajax请求中获取成功回调,并调用alert从Json对象传递数据。
点击提交后,您可能不会使用加载掩码,以便用户知道正在发生的事情。