Ich habe ein Login-Modell mit Benutzername und Passwort und Code.So geben Sie automatisch Modelldaten ein
Und jetzt möchte ich, wenn Sie den Code dann automatisch den zugehörigen Benutzernamen und das Passwort ausgefüllt haben. So zum Beispiel füllen Sie für Code: HD und dann TAB und dann die Textfelder für Benutzername und Passwort muss gefüllt in
die Aktion Methode sieht wie folgt aus:.
[HttpPost]
public ActionResult LoginBalieUser(V_LoginModel_BalieUser model)
{
ISalesPersonProfile salesAgent99 = CommerceFrameworkBase.SalesPersons.GetSalesPerson("HD");
var salesAgent = CommerceFramework.ShopAccounts.GetShopAccount(Guid.Parse("3E90BB13-36BA-435D-8ED7-E930A4F8C758"), true);
if (model.BalieCode == salesAgent99.Id)
{
if (!ModelState.IsValid)
return View(model);
if (!ShopApi.UserState.Login(model.UserName, model.Password, model.RememberMe))
{
ModelState.AddModelError("","The username or password is incorrect");
return View(model);
}
}
return RedirectToAction("Index", "Profile");
}
das erweiterte Modell sieht wie folgt aus:
public class V_LoginModel_BalieUser : LoginModel
{
public string BalieCode { get; set; }
}
und der oder iginal Modell sieht wie folgt aus:
//
// Summary:
// A model to login into the webshop.
public class LoginModel
{
public LoginModel();
//
// Summary:
// Gets or sets the password.
[AllowHtml]
[DataType(DataType.Password)]
[Display(Name = "Password")]
[Required(ErrorMessageResourceName = "Validation_RequiredField")]
[StringLength(30, ErrorMessageResourceName = "Validation_MaxLengthExceeded")]
public virtual System.String Password { get; set; }
//
// Summary:
// Gets or sets a value indicating whether to remember the user to login him automatically
// on the next visit.
[Display(Name = "Login_RememberMe")]
public virtual System.Boolean RememberMe { get; set; }
//
// Summary:
// Gets or sets the username.
[DataType(DataType.EmailAddress, ErrorMessageResourceName = "Validation_InvalidField")]
[Display(Name = "EmailAddress")]
[Required(ErrorMessageResourceName = "Validation_RequiredField")]
[StringLength(80, ErrorMessageResourceName = "Validation_MaxLengthExceeded")]
[TrimAttribute(new[] { })]
public virtual System.String UserName { get; set; }
}
und der Blick sieht wie folgt aus:
@{
Layout = LayoutPaths.General;
}
@model Sana.Commerce.DomainModel.Account.V_LoginModel_BalieUser
<div class="semicolumn">
<div class="form-holder">
@using (Html.BeginForm(htmlAttributes: new { @class = "form" }))
{
@Html.AntiForgeryToken()
<table>
<tr>
<th>
@Html.DisplayNameFor(modelItem => modelItem.BalieCode)
</th>
<th></th>
</tr>
<tr>
<td>
@Html.TextBoxFor(modelItem => modelItem.BalieCode)
</td>
</tr>
<tr>
<th>
@Html.DisplayNameFor(modelItem => modelItem.UserName)
</th>
<th></th>
</tr>
<tr>
<td>
@Html.TextBoxFor(modelItem => modelItem.UserName)
</td>
</tr>
<tr>
<th>
@Html.DisplayNameFor(modelItem => modelItem.Password)
</th>
<th></th>
</tr>
<tr>
<td>
@Html.TextBoxFor(modelItem => modelItem.Password)
</td>
</tr>
</table>
<div class="form-row">
<h4></h4>
<input type="submit" value="Login" />
</div>
}
</div>
<div>
</div>
</div>
@section Scripts{
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script>
$(document).ready(function(){
$("#Id").change(function() {
$.ajax({
type: "Get",
url: '@Url.Action("loginbalieUser", "profile")',
data: { id: $("").val() },
dataType: "json",
success: function (data) {
$("#UserName").val(data[0]);
$("#Password").val(data[1]);
}
});
})
});
</script>
}
Also habe ich versucht, mit einem Aufruf Ajax. Aber die genaue Umsetzung weiß ich nicht.
Danke
dies ist das Modell: ISalesPersonProfile
//
// Summary:
// Interface for the Sales Person Profile entity.
public interface ISalesPersonProfile : IEntity
{
//
// Summary:
// Email of this Sales person.
string Email { get; set; }
//
// Summary:
// Sales person's code.
string Id { get; set; }
//
// Summary:
// Job Title of the Sales person.
string JobTitle { get; set; }
//
// Summary:
// Name of the Sales person.
string Name { get; set; }
//
// Summary:
// Phone number of the Sales person.
string Phone { get; set; }
//
// Summary:
// Gets or sets the related customer id list related with the sales person.
IList<string> RelatedCustomerIds { get; set; }
}
Aber ich bekomme diese Fehlermeldung:
loginbalieUser:232 Uncaught ReferenceError: ValidateBalieCode is not defined
at HTMLInputElement.onchange (loginbalieUser:232) on this line: <tr>
<td>
@Html.TextBoxFor(modelItem => modelItem.BalieCode, new { @onchange = "ValidateBalieCode()" })
</td>
</tr>
und das ist mein Ajax-Aufruf:
function ValidateBalieCode(){
var code = $('input#BalieCode').val();
$.ajax({
type: "Get",
url: '@Url.Action("ValidateBalieCode", "profile")',
data: { "BalieCode":code },
success: function (data) {
$("input#UserName").val(data.UserName);
$("input#Password").val(data.Password);
}
});
}
wenn ich loa d die Seite in Goog chrome:
Ich sehe dies:
function ValidateBalieCode(){
var code = $('input#BalieCode').val();
$.ajax({
type: "Get",
url: '/sitemap.xml',
data: { "BalieCode":code },
success: function (data) {
$("input#UserName").val(data.UserName);
$("input#Password").val(data.Password);
}
});
}
oke,
habe ich es jetzt wie folgt aus:
function ValidateBalieCode() {
var code = $('input#BalieCode').val();
$.ajax({
async: true,
type: "Get",
url: "/profile/ValidateBalieCode/",
contentType: "application/json; charset=utf-8",
data: { "BalieCode": code },
success: function (data) {
$("input#UserName").val(data.UserName);
$("input#Password").val(data.Password);
}
});
}
aber die URL ist wie folgt:
http://localhost:5923/en-us/profile/loginbalieuser
also immer: en uns. aber wenn ich dies tun:
url: "en-us/profile/ValidateBalieCode/",
dann in Chrom Ich sehe dies:
http://localhost:5923/en-us/profile/en-us/profile/ValidateBalieCode/?BalieCode=1 404 (Not Found)
ich keine Kontrolle mit id '# Id' finden konnten. Also, was ist '$ (" # ID "). Ändern" – mmushtaq
Vielen Dank für Ihre Antwort. Ich bearbeite den Post, den ich dachte, Id ist die ID von salesAgent99. Ich weiß nicht genau, wie man es mit Ajax macht –
Es ist wirklich schwer, Ihre Frage zu verstehen. Ihre 'LoginBalieUser' Aktion ist mit' HttpPost' gekennzeichnet und in Ihrem Ajax geben Sie 'get' an. – mmushtaq