#c# #asp.net
#c# #asp.net
Вопрос:
У меня есть такой класс:
public class saveModel
{
public int ID{ get; set; }
[DisplayName("Area")]
public string Area { get; set; }
public string AreaDescription { get; set; }
[DisplayName("Model")]
public string Model { get; set; }
[DisplayName("Description")]
}
и в моем контроллере у меня есть это:
[Authorize]
public ActionResult ModelEdit(int id)
{
saveModel model = webService.getModel(id);
return View(model);
}
[Authorize]
[HttpPost]
public ActionResult ModelEdit(saveModel model)
{
return View();
}
и в поле зрения у меня есть это:
@model MyApp.Models.saveModel
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.ModelID, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.ModelID, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.ModelID, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Area, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Area, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Area, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.AreaDescription, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.AreaDescription, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.AreaDescription, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Model, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Model, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Model, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
</div>
}
Проблема, с которой я сталкиваюсь, заключается в том, что когда я нажимаю кнопку сохранения, она переходит к правильному методу, но моя saveModel пуста при отправке…что я делаю не так?
Ответ №1:
попробуйте включить атрибут from body, как показано ниже
[Authorize]
[HttpPost]
public ActionResult ModelEdit([FromBody]saveModel model)
{
return View();
}
если это не решит вашу проблему, то в ваше поле ID передается недопустимое или пустое значение. Вы можете проверить свойство ModelState, которое будет указывать на нужное поле.
Комментарии:
1. Это решение не сработало, я проверю ModelState …. как мне это сделать?
2. Выясните, как проверить состояние модели… Я получил эту ошибку: Exception = {«Преобразование параметра из типа ‘System. Строка’ для ввода ‘MyApp.Models.saveModel’ не удалась, поскольку ни один конвертер типов не может конвертировать между этими типами «.}
3. Ааааа, проблема в модели. Модели это не нравится.
4. Я собираюсь изменить его название на Title