Обновление
Я просто использовал переменные сеанса для передачи значений в блок Ajax.BeginForm. Это хак, который я не хотел использовать, но я просто не мог найти другой способ ...
Оригинальный пост
Я использую цикл For, который присваивает каждому комментарию div в цикле уникальный идентификатор, например:
<div id="comment@(feedModel.PostID)"></div>
EX:
comment1
comment2
comment3
Каждый из этих div имеет Ajax.BeginForm с кнопкой ввода ввода. Я хочу установить AjaxOption UpdateTargetId, но не могу, потому что каждый идентификатор уникален. Так что UpdateTargetId = "div" не будет работать. Я не могу просто передать модель или TempData, потому что это Ajax.BeginForm. Так как мне передать в feedModel.PostID?
Код:
@foreach (Website.Models.FeedModel feedModel in Model)
{
<span id="commentspan@(feedModel.PostID)" style="margin-top:5px; display:block;
font-weight:bold"><a href="#" onclick="loadPartialView(@feedModel.PostID);
return false;">Comments(@feedModel.Replies)</a></span>
<div id="comments@(feedModel.PostID)"></div>
}
Javascript, который называется:
function loadPartialView(context) {
method HomeController._Comments
$('#comments' + context).load('Home/_Comments/' + context);
}
Внутри этого PartialView
@if (Request.IsAuthenticated)
{
<div class="childpost">
@using (Ajax.BeginForm("SubmitChildPost", "Home", new AjaxOptions { UpdateTargetId =
"comments@TempData['feedModelID'].ToString()" }, new { id =
@TempData["feedModelID"].ToString() }))
{
@Html.TextArea("MessageBox", "", 2, 50, null)
<br />
<p>
@Html.AntiForgeryToken()
<input type="submit" value="Reply" class="replybutton" />
</p>
}
</div>
}
Какие сообщения в Акции. Идентификатор строки имеет значение null, потому что вы не можете передать значения модели или временные данные в Ajax.BeginForm, поэтому я не уверен, что делать ...
[ValidateAntiForgeryToken]
public ActionResult SubmitChildPost(FormCollection formValue, string id)
{
string message = formValue["MessageBox"].ToString();
if (message != "")
{
MessageRepository.UpdatePostReply(Convert.ToInt32(id));
MessageRepository.SaveChildPost(message, id, User.Identity.Name);
}
return RedirectToAction("_Comments", "Home", new { ID = id});
}