ユーザーから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のものだと確信していますが、これに対する簡単な答えが見つからないようです。
ご協力いただきありがとうございます。
ジェイソン