Мне было предложено работать над проектом ASP.Net WebForms, и я хочу использовать ModelBinding, как в ASP.Net MVC.ASP.Net привязка модели - WebForms
У меня возникли проблемы с тем, чтобы это сработало и мне хотелось бы помочь, если это возможно.
Если я хочу привязать модель к объектам в форме, мне нужно сделать это в FormView, GridView и т. Д., Но в этом случае я хочу использовать FormView.
Этот код является упрощенной версией того, с чем я работаю, но имеет отношение к каждому из них.
<asp:FormView runat="server" ID="frmMain" ItemType="WebFormsModelBinding.TestModel" SelectMethod="TestBinding_select" >
<ItemTemplate>
<asp:TextBox runat="server" ID="txtName" Text="<%#: BindItem.Name %>" />
<br/>
<asp:TextBox runat="server" id="txtAge" Text=" <%#: BindItem.Age %>" />
</ItemTemplate>
</asp:FormView>
<asp:Button runat="server" id="bttnInsert" Text="button"/>
У меня есть сценарий JQuery, который пытается передать данные обратно в модель, но я продолжаю получать Internal 500 Ошибки
$(document).ready(function() {
$("#MainContent_bttnInsert")
.click(function() {
var params = {
Name: "Dave",
Age: 55
}
$.ajax({
type: "POST",
url: "default.aspx/TestBinding",
data: JSON.stringify(params),
contentType: "application/json; charset=utf-8",
dataType: "json",
//success: function (data) {
success: function() {
alert("it worked");
return false;
},
error: function (data) {
console.log(data);
alert("didnt work");
}
});
return false;
});
})
Это должно поразить этот код на странице по умолчанию
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[System.Web.Services.WebMethod]
public static bool TestBinding(TestModel model)
{
return true;
}
public TestModel TestBinding_select()
{
var model = new TestModel
{
Name = "Simon",
Age = 33
};
return model;
}
}
public class TestModel
{
public string Name { get; set; }
public int Age { get; set; }
}
Проблемы, которые возникают у меня, это то, что, поскольку я не могу использовать ActionResult, мне нужно объявить другой тип объекта как возвращаемый тип. В этом примере я выбрал bool и нет особых причин для этого.
Чтобы попасть в WebMethod, мне нужно сделать метод статическим.
ошибка, что я получаю
«Неверный вызов веб-службы, отсутствует значение параметра:„модель“.»
Итак, я могу передать модель в пользовательский интерфейс и представить ее в FormView в этом экземпляре, но я не могу передать модель обратно через JQuery или обратную передачу.
Есть все, что мне не хватает, или мне действительно нужно пройти каждую переменную обратно, а затем передать значения в классе, таким образом, что делает модель связывания почти бессмысленно в WebForms
Я просто пытаюсь это сейчас, но то, что я видел, с точки зрения постбэков я не видел ничего, что бы действовать в манере как я пытаюсь достичь этого, но видел, что мне нужно будет сделать это, посмотрев на «Request.Form ....» на каждый элемент, который будет таким же, как пропуск каждой переменной через jquery –
, это сработало! Благодарю. –
@SimonPrice Что касается комбинации веб-форм и привязки к моделям, я настоятельно рекомендую учебник по трем частям от ScottGu. Первая часть доступна [здесь] (https://weblogs.asp.net/scottgu/web-forms-model-binding-part-1-selecting-data-asp-net-vnext-series). – user1429080