Я храню имя и адрес в сеансе в классе статического сеанса.Когда клиент открывает экран оплаты, я заполняю форму с именем и адресом.Если клиент A открывает экран кредитной карты, а затем клиент B открывает тот же экран, у клиента B есть имя и адрес клиента A.
Я думаю, это происходит из-за «статического» сеанса.учебный класс?Если это так, как мне избежать этого?
Вот мой класс MySession:
public static class MySession
{
public static string BranchNumber { set; get; }
public static string AccountNumber { set; get; }
public static string Name { set; get; }
public static string CustomerEmail { get; set; }
public static string Street { get; set; }
public static string Zip { get; set; }
public static string Zip4 { get; set; }
}
И моя форма:
@model SssMobileIInquiry.Models.HomeModels.CreditCard
@{
ViewBag.Title = "Credit Card Payment";
}
<div class="container">
@using (Html.BeginForm("SubmitCreditCardCharge", "Home", FormMethod.Post))
{
<h4>Credit Card Payment</h4>
<div class="row">
<div class="col-sm-3">
Name
</div>
<div class="col-sm-9 focus">
@Html.TextBoxFor(m => m.NameOnCard, new { @class = "form-control" })
</div>
</div>
<div class="row">
<div class="col-sm-3">
Street
</div>
<div class="col-sm-9">
@Html.TextBoxFor(m => m.Street, new { @class = "form-control" })
</div>
</div>
<div class="row">
<div class="col-sm-3">
Zip Code
</div>
<div class="col-sm-9">
@Html.TextBoxFor(m => m.ZipCode, new { @class = "form-control", @maxlength = "9" })
</div>
</div>
<div class="row">
<div class="col-sm-3">
Card Number
</div>
<div class="col-sm-9">
@Html.TextBoxFor(m => m.CardNumber, new { @class = "form-control" })
</div>
</div>
<div class="row">
<div class="col-sm-3">
Expiration Date
</div>
<div class="col-sm-9 datefieldsmall">
@Html.TextBoxFor(m => m.ExpirationDateMonth, new { @class = "form-control", @maxlength = "2", @placeholder = "MM" })
</div>
<div class="col-sm-9 datefieldsmall">
@Html.TextBoxFor(m => m.ExpirationDateYear, new { @class = "form-control", @maxlength = "2", @placeholder = "YY" })
</div>
</div>
<div class="row">
<div class="col-sm-3">
CVV Number
</div>
<div class="col-sm-9">
@Html.TextBoxFor(m => m.PinNumber, new { @class = "form-control", @maxlength = "4" })
</div>
</div>
<div class="row">
<div class="col-sm-3">
Amount
</div>
<div class="col-sm-9">
@Html.TextBoxFor(m => m.PaymentAmount, new { @class = "form-control", @maxlength = "7" })
</div>
</div>
<div class="warning">
@Html.ValidationMessageFor(m => m.PaymentAmount)
</div>
<div class="row">
<input id="submitpayment" class="btn btn-primary btn-block buttonx accountinfobutton" type="submit" value="Submit" />
</div>
}
@using (Html.BeginForm("AccountInfo", "Home", FormMethod.Post))
{
<div class="row">
<input id="submitpayment" class="btn btn-primary btn-block buttonx accountinfobutton" type="submit" value="Account" />
</div>
}
</div>
И мой ActionResults:
public ActionResult CreditCard()
{
if (MySession.CorporationId == Guid.Empty || string.IsNullOrEmpty(MySession.AccountNumber))
{
return View("Index");
}
var model = new Models.HomeModels.CreditCard();
model.NameOnCard = MySession.Name;
model.Street = MySession.Street;
model.ZipCode = MySession.Zip;
model.PaymentAmount = MySession.TotalBalance.Contains("-") ? "" : MySession.TotalBalance;
if (MySession.BudgetBalance.GetNumericValue() > 0 && MySession.BudgetRate.GetNumericValue() > 0)
{
model.PaymentAmount = MySession.BudgetBalance;
}
return View("CreditCard", model);
}
Я заполняю свою модель MySession:
model.NameOnCard = MySession.Name;
model.Street = MySession.Street;
model.ZipCode = MySession.Zip;
Я не уверен, почему информация о клиенте отображается для другой учетной записи, вошедшей в систему. Любые идеи будут высоко оценены.
Спасибо за помощь!