1

我是 MVC 的新手。我希望能够在单击视图按钮时更改按钮/div/文本框文本。我在网上找到了一个教程,它向我展示了以下内容,但是当我单击按钮时,我被重定向到另一个页面。该页面改为显示文本。我没有碰过默认的 Global.aspx

看法

@using (Ajax.BeginForm("ExamineTextBox", new AjaxOptions { UpdateTargetId = "result" }))
{
    @Html.TextBox("textBox1")
    <input type="submit" value="Button" />
    <span id="result" />
}

控制器

public string ExamineTextBox(string textBox1)
{
    if (textBox1 != "Initial Data")
    {
        return "This text is MVC different from before!";
    }
    return String.Empty;
}
4

1 回答 1

1

确保您已将jquery.unobtrusive-ajax.js脚本包含到您的页面中。

如果您使用的是默认捆绑包(看看~/App_Start/BundleConfig.cs- 您将看到一个jqueryval定义的捆绑包,它组合并缩小了所有~/Scripts/jquery.unobtrusive*文件"~/Scripts/jquery.validate*"):

@Scripts.Render("~/bundles/jqueryval")

如果不使用捆绑包,您可以单独包含此脚本:

<script type="text/javascript" src="~/scripts/jquery.unobtrusive-ajax.js"></script>

Ajax.*助手工作需要这个脚本。顾名思义,它以不显眼的方式对它们进行 AJAX 化。它依赖于 jQuery,所以确保你也包含了那个。

旁注:在 ASP.NET 控制器中,操作应该返回 ActionResults,而不是字符串:

public ActionResult ExamineTextBox(string textBox1)
{
    if (textBox1 != "Initial Data")
    {
        return Content("This text is MVC different from before!");
    }
    return Content(String.Empty);
}

以下是您的完整视图代码的外观:

@{
    Layout = null;
}

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
        <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
        <meta name="viewport" content="width=device-width" />
    </head>
    <body>
        @using (Ajax.BeginForm("ExamineTextBox", new AjaxOptions { UpdateTargetId = "result" }))
        {
            @Html.TextBox("textBox1", "Initial Data")
            <input type="submit" value="Button" />
            <span id="result" />
        }
        @Scripts.Render("~/bundles/jquery")
        @Scripts.Render("~/bundles/jqueryval")
    </body>
</html>

和控制器:

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

    public ActionResult ExamineTextBox(string textBox1)
    {
        if (textBox1 != "Initial Data")
        {
            return Content("This text is MVC different from before!");
        }
        return Content(String.Empty);
    }
}
于 2012-08-15T16:00:54.860 回答