Ich habe ein Modell auf meiner CSHTML Seite das, was ich auf diese Weise verwenden:Wie man Modellwert in der Javascriptfunktion erhält und es zum Kontroller übergibt?
@model Web.Models.Element
@using (Html.BeginForm("Search", "Company"))
{
@Html.HiddenFor(c => c.Person)
<div class="panel panel-default">
<div class="panel-heading"> Company Search</div>
<div class="panel-body collapse" id="screenCompanySearch">
<form id="formSearch" name="formSearch" method="post">
<fieldset style="margin: 20px;">
<legend>Search</legend>
<div class="row">
<div class="col-xs-2 col-sm-2">
@Html.Label("Company Name")
@Html.TextBoxFor(c => c.Company.Name, new { @class = "form-control" })
</div>
</fieldset>
</form>
</div>
</div>
Mein Javascript-Funktion durch eine Schaltfläche klicken, um diese Art und Weise aufgerufen:
$("#btnSearch").on("click", function() { searchCompany(); })'
In meiner JavaScript-Funktion muß ich Holen Sie sich dieses Modell vollständig mit den TextBoxFor Werte geladen:
<script type="text/javascript">
function searchCompany() {
var data = $("#formSearch").serialize();
$.ajax({
url: "@(Url.Action("SearchCompany", "Company"))",
cache: false,
data: data,
type: "POST",
success: alert("sucesso!")
});
}
</script>
Mein Controller-Methode richtig, aber das Modell geführt, in dem Ajax geladen "wird data "-Parameter ist nicht mit den TextBoxFor-Werten gefüllt.
Das ist meine Controller-Action für die Ansicht:
public ActionResult Consulta()
{
Element model = new Element();
model.Person = new Person();
return View(model);
}
Was passiert ist, dass mein Modell auf meinem Controller-instanziiert wird, aber die Werte aus der TextBoxFor nicht auf den Eigenschaften des Modells erfaßt.
Wie kann ich das lösen? Danke für jetzt.
<div class="col-xs-2 col-sm-2">
@Html.Label("Person Name")
@Html.TextBoxFor(c => c.Person.Name, new { @class = "form-control" })
</div>
aktualisiert, so, 'c' gleich mein Element-Objekt. Wenn ich die Controller-Methode "Search" erreiche, instanziiert der über den Ajax-Aufruf übergebene Parameter Element nicht die Element.Person, die mir Person = null gibt.
In meiner Action ich habe:
Element model = new Element();
model.Person = new Person();
Element Klasse:
public Element()
{
this.Contacts = new List<Contact>();
this.DataType = new DataType();
}
public int ID_Element { get; set; }
public int ID_ElementType { get; set; }
public virtual List<Contact> Contacts { get; set; }
public virtual DataType DataType { get; set; }
public virtual Person Person {get; set; }
Controller Aktion
[HttpPost]
public JsonResult SearchCompany(Element model)
{
...
}
Wo und wie rufen Sie die Methode 'searchCompany' js? und was gehst du darauf? – Shyju
Wie in meinem Skript-Abschnitt: $ ("# btnSearch"). On ("click", function() {searchCompany (model)}); @Shyju –
Was ist 'Modell' dort? Ist das dein js Objekt? Fügen Sie Ihrer ursprünglichen Frage den entsprechenden Code hinzu. – Shyju