我很难看到如何在不创建会话var的情况下保存页面状态。 我有一个页面,其中一个按钮可以更改页面的状态,在帖子上可能会返回视图,但处于错误的状态。我试过ViewBag,这不能在java范围内设置。我需要一个解决方案来保存AuthType的值..
@model Trakman_Portal_Administration.Models.Connection
@ {
ViewBag.Title = "Create";
var conStringType = ViewBag.conStringType;
}
@Scripts.Render("~/bundles/jquery")
<script type='text/javascript'>
var authType = 1
$(document).ready(function () {
alert(authType);
if (authType == 0) {
$("#usernameLabel").hide();
$("#usernameField").hide().find('input:text').val("");
$("#passwordLabel").hide();
$("#passwordField").hide().find('input:text').val("");
//$("#initialCatalogLabel").show();
//$("#initialCatalogField").show();
document.getElementById("button1").textContent = "Intergrated";
authType = 1;
}
else {
$("#usernameLabel").show();
$("#usernameField").show();
$("#passwordLabel").show();
$("#passwordField").show();
//$("#initialCatalogLabel").hide();
//$("#initialCatalogField").hide();
document.getElementById("button1").textContent = "SQL Authentication";
authType = 0;
}
$("button").click(function () {
//$("#usernameField").attr("value","");
//$("#passwordField").attr("value","");
if (authType == 0) {
$("#usernameLabel").hide();
$("#usernameField").hide().find('input:text').val("");
$("#passwordLabel").hide();
$("#passwordField").hide().find('input:text').val("");
//$("#initialCatalogLabel").show();
//$("#initialCatalogField").show();
document.getElementById("button1").textContent = "Intergrated";
authType = 1;
}
else {
$("#usernameLabel").show();
$("#usernameField").show();
$("#passwordLabel").show();
$("#passwordField").show();
//$("#initialCatalogLabel").hide();
//$("#initialCatalogField").hide();
document.getElementById("button1").textContent = "SQL Authentication";
authType = 0;
}
});
});
<h2>Create</h2>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>connection</legend>
<div class="editor-label">
Authentication Type
</div>
<div>
<button id="button1" value="Intergrated" name="intergrated" >SQL Authentication</button>
</div>
<br />
<br />
<br />
<div class="editor-label">
Connection Name
</div>
<div class="editor-field">
@Html.EditorFor(model => model.conName)
@Html.ValidationMessageFor(model => model.conName)
</div>
<div class="editor-label">
Data Source
</div>
<div class="editor-field">
@Html.EditorFor(model => model.dataSource)
@Html.ValidationMessageFor(model => model.dataSource)
</div>
<div class="editor-label" id="initialCatalogLabel">
Initial Catalog
</div>
<div class="editor-field" id="initialCatalogField">
@Html.EditorFor(model => model.initialCatalog)
@Html.ValidationMessageFor(model => model.initialCatalog)
</div>
<div class="editor-label" id = "usernameLabel">
Username
</div>
<div class="editor-field" id="usernameField">
@Html.EditorFor(model => model.username)
@Html.ValidationMessageFor(model => model.username)
</div>
<div class="editor-label" id = "passwordLabel">
Password
</div>
<div class="editor-field" id = "passwordField">
@Html.EditorFor(model => model.password)
@Html.ValidationMessageFor(model => model.password)
</div>
<p>
<input type="submit" value="Create"/>
@{
if (!string.IsNullOrEmpty(ViewBag.error))
{
<div style="color:Red">
@ViewBag.error
</div>
}
}
</p>
</fieldset>
}
答案 0 :(得分:0)
我很难看到如何在不进行会话变量的情况下保存页面状态
使用视图模型在帖子后面保留您的信息就可以了。
public class ConnectionViewModel
{
public string AuthenticationType { get; set; }
public string ConnectionString { get; set; }
...
}
public ActionResult Login()
{
// pass in defaults
return View(new ConnectionViewModel
{
AuthenticationType = "Windows",
ConnectionString = "..."
});
}
[HttpPost]
public ActionResult Login(ConnectionViewModel viewModel)
{
// pass view model back into view to retain values
return View(viewModel);
}