【问题标题】:How to execute a method properly in Controller in MVC4如何在MVC4的Controller中正确执行方法
【发布时间】:2017-02-09 00:29:31
【问题描述】:

我有一个简单的 MVC 应用程序,它从用户那里检索数据库服务器、数据库、用户名和密码以存储在 XML 文件中。我想在屏幕上添加一个“测试连接”按钮,并让它在控制器上执行一个名为 TestConnection 的方法。问题是 TestConnection 方法在单击时重置屏幕上的所有信息,因为返回的视图没有模型。 (因为正在发生 GET 操作)。这是我的代码:

来自控制器(名为FrameworkConfigurationController.cs

  public ActionResult TestConnection()
    {
        return View("Index");
    }

    [HttpPost]
    public ActionResult TestConnection(FrameworkConfigurationViewModel viewModel)
    {           
        // TODO: Test will occur here
        viewModel.DbConnectionMessage = string.IsNullOrEmpty(viewModel.DatabaseName) ? "Connection unsuccessful" : "Connection successful";

        return View("Index", viewModel);
    }

在我看来 (FrameworkConfiguration/Index):

@model Framework.ViewModels.FrameworkConfigurationViewModel

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
 }

@using (Html.BeginForm()) {
@Html.ValidationSummary(true)

<fieldset>
    <legend>FrameworkConfigurationViewModel</legend>

    <div class="editor-label">
        @Html.LabelFor(model => model.ServerName)
    </div>

    @* Edited for brevity *@

    <button type="submit" onclick="location.href='@Url.Action("TestConnection")'">
       Test Connection</button>

    @Html.ValueFor(model => model.DbConnectionMessage)

    <p>
        <input type="submit" value="Save" />            
    </p>
</fieldset>
}

<div>
    @Html.ActionLink("Back to Dashboard", "Index", "Home")
</div>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

诚然,我是 MVC 编程的新手。我来自 Silverlight/MVVM 背景,所以这个概念对我来说并不陌生……网络编程的不连贯性是。我已经遵循了一些教程,但似乎没有一个涵盖这种类型的东西——每个例子都是人为的。我知道如何使用 webforms 和代码隐藏来做到这一点,但我想用 MVC 来完成这个。

有没有办法“强制”POST 操作而不是 GET?我的印象是

<button type="submit">

做到了。也许我写的 onclick 的实现是不正确的。我确信这是 HTML 101 的东西,但我似乎找不到一个简单的答案。

感谢您提供的任何帮助,

杰森

【问题讨论】:

    标签: c# html asp.net-mvc asp.net-mvc-4


    【解决方案1】:

    为什么不让测试连接按钮触发一个 Ajax 动作来调用控制器并显示结果?

    这样可以避免提交整个页面。

    如果您不熟悉细节,这里有一个很好的 Ajax 和 MVC 4 入门概述

    http://ofps.oreilly.com/titles/9781449320317/ch_AJAX.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-14
      • 2017-04-25
      • 1970-01-01
      • 2020-02-27
      • 1970-01-01
      • 1970-01-01
      • 2019-09-20
      • 1970-01-01
      相关资源
      最近更新 更多