Я уже несколько лет читаю stackoverflow, но это первый раз, когда мне действительно нужно опубликовать вопрос, поскольку я не могу найти подходящий ответ где-либо.
Дело в том,Я хочу передать объект (точнее, сущность LinqToSQL) в мой View, разрешить пользователю добавить некоторые свойства, а затем опубликовать его обратно, чтобы сохранить.
Мой объект, называемый Probation, имеетнесколько свойств (id, forpost, forcomment, пользователь, запуск, часы) и некоторые ссылки на связанные сущности.Субъекты forpost и forcomment допускают обнуление, поскольку пользователь может быть подвергнут испытанию за создание оскорбительного сообщения или оскорбительного комментария.Пожалуйста, учтите, что forpost относится к сущности Idea, я не знаю, о чем я думал, называя это постом.
Итак, вот моя логика контроллера:
[Authorize(Roles = "Admin, Moderator")]
public ActionResult ProbateUser(int? post, int? comment)
{
if (post != null)
{
Idea idea = irep.GetIdea(post ?? 0);
Probation probation = new Probation
{
user = (Guid)idea.user,
Idea = idea
};
return View(probation);
}
if (comment != null)
{
Comment rcomment = crep.GetComment(comment ?? 0);
Probation probation = new Probation
{
user = rcomment.user,
Comment = rcomment
};
return View(probation);
}
return View("NotFound");
}
[AcceptVerbs(HttpVerbs.Post)]
[Authorize]
public ActionResult ProbateUser(Probation probation, FormCollection values)
{
try
{
probation.starting = DateTime.Now;
rep.ProbateUser(probation);
rep.Save();
return RedirectToAction("Index");
}
catch
{
return View("NotFound");
}
}
}
А вот мнение,используя скрытые поля для хранения предустановленных значений:
<fieldset>
<legend>Fields</legend>
<%: Html.Hidden("Idea", Model.Idea)%>
<%: Html.Hidden("Comment", Model.Comment)%>
<%: Html.Hidden("user", Model.user) %>
<div class="editor-label">
<%: Html.LabelFor(model => model.reason) %>
</div>
<div class="editor-field">
<%: Html.TextAreaFor(model => model.reason) %>
<%: Html.ValidationMessageFor(model => model.reason) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.hours) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.hours) %>
<%: Html.ValidationMessageFor(model => model.hours) %>
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
Теперь моя проблема заключается в том, что после отправки объекта Probation пустые поля forcomment и forpost всегда будут нулевыми!
Итак, подведем итог: как правильно передать объекты с обнуляемыми свойствами из Controller-> View-> Controller?Довольно пожалуйста?