1

ユーザーからDBサーバー、データベース、ユーザー名、パスワードを取得してXMLファイルに保存する単純なMVCアプリケーションがあります。「Test Connection」ボタンを画面に追加し、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 のバックグラウンドを持っているので、概念は私にとって異質ではありません... Web プログラミングの切断された性質はそうです。私はそこにあるいくつかのチュートリアルに従いましたが、この種のことをカバーしているようには見えません-すべての例は不自然です. Web フォームとコード ビハインドでこれを行う方法は知っていますが、MVC でこれを実現したいと考えています。

GET の代わりに POST 操作を「強制」する方法はありますか? という印象を受けました

<button type="submit">

それを達成しました。おそらく、私が書いた onclick の実装は正しくありません。これはHTML 101のものだと確信していますが、これに対する簡単な答えが見つからないようです。

ご協力いただきありがとうございます。

ジェイソン

4

1 に答える 1

2

[接続のテスト]ボタンでAjaxアクションをトリガーしてコントローラーを呼び出し、結果を表示してみませんか?

そうすれば、ページ全体を送信する必要がなくなります。

詳細に慣れていない場合は、AjaxとMVC4の使用を開始するための概要を以下に示します。

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

于 2013-01-29T17:17:33.067 に答える