У меня есть таблица с различными частями данных.У меня также есть Html.TextAreaFor для ввода текста. Вот таблица
Мне нужно захватить текст в Textarea для .. отправить его на контроллер через ajax .post
<table class="table table-striped table-hover col-xl-12" id="policyTable">
<tr class="thead-dark">
<th class="toggleMe1">
UnderWriter
</th>
<th class="toggleMe2">
@Html.DisplayNameFor(model => model.Client)
</th>
<th>
Exp-Policies
</th>
<th>
Exp-Date
</th>
<th class="hideMe">
Date - Updated
</th>
<th>
Reviewed-By
</th>
<th>
Email-Created
</th>
<th>
@Html.DisplayNameFor(model => model.CAB)
</th>
<th>
@Html.DisplayNameFor(model => model.LossRun)
</th>
<th>
@Html.DisplayNameFor(model => model.MMS)
</th>
<th>
@Html.DisplayNameFor(model => model.Notes)
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr id="id_@item.Id">
<td class="hideMe">
@Html.DisplayFor(modelItem => item.Id, new { id = "VisibleID" })
</td>
<td>
@Html.DisplayFor(modelItem => item.NewUw)
</td>
<td>
@Html.DisplayFor(modelItem => item.Client)
</td>
<td>
@Html.DisplayFor(modelItem => item.Expiring_Policies)
</td>
<td>
@Html.DisplayFor(modelItem => item.ExpDate)
<td class="hideMe">
@Html.DisplayFor(modelItem => item.DateUpdated)
</td>
<td>
@Html.DisplayFor(modelItem => item.InsertedBy)
</td>
<td>
@Html.DisplayFor(modelItem => item.EmailCreated)
</td>
<td>
@Html.DisplayFor(modelItem => item.CAB)
</td>
<td>
@Html.DisplayFor(modelItem => item.LossRun)
</td>
<td>
@Html.DisplayFor(modelItem => item.MMS)
</td>
<td style="width: 25%; height: 120px;">
<div class="form-group">
@* @Html.LabelFor(model => model.Notes, htmlAttributes: new { @class = "control-label col-md-2" })*@
<div class="col-md-12">
@Html.TextAreaFor(modelItem => item.Notes, new { @class = "form-control textAreaCS", @rows = 8 })
@Html.ValidationMessageFor(modelItem => item.Notes, "", new { @class = "text-danger" })
</div>
</div>
<div class="col-12 ml-3">
<div class="row">
<input type="submit" value="Save" id="notes" class="btn btn-outline-primary btn-sm col-2" style="font-size: 16px" />
<div class="col-1">
@if (TempData["LB"] != null)
{
<div class="alert alert-danger text-center text-capitalize" style="font-size: 16px;">
@TempData["LB"]
</div>
}
</div>
</div>
</div>
</td>
<td>
@Html.ActionLink("Review", "EditPolicy", new { id = item.Id }, new { @class = "review" })
</td>
</tr>
}
</table>
Вот вызов ajax
var url = "/Policy/CompletedNotes";
var policyNotes = $("#item_Notes").text();
var id = $("#VisibleID").val();
$("input#notes").on('click', function () {
alert(id);
var data = JSON.stringify({ Id: id, polNotes: policyNotes });
$.ajax({
url: '/Policy/CompleteNotes',
type: 'POST',
contentType: 'application/json',
data: data,
success: function () {
alert('success');
}
});
Я передаю идентификатор строки и текст в текстовом поле.Вот контроллер, который я передаю
[HttpPost, ValidateInput(false)]
public ActionResult CompletedNotes(CompletedPolicyVM completedPolicy, string Id, string polNotes)
{
int val = Convert.ToInt32(Id);
using (Db db = new Db())
{
int id = completedPolicy.Id;
NotesDTO notesDTO = db.notes.Find(id);
if (notesDTO == null )
{
return Content("This policy cannot be found." + Id);
}
//instantiate a stringbuilder variable so I can append the text when inserting in db.
var sb = new StringBuilder();
const char carriageReturn = (char)13;
const char newLine = (char)10;
string insertedDate = "Inserted on " + DateTime.Now.ToString("MM/dd/yyyy HH:mm") + " by " + User.Identity.Name;
if (notesDTO.Notes == null || notesDTO.Notes == String.Empty)
{
notesDTO.Notes = sb.AppendLine(insertedDate).ToString() + " " + polNotes + "\n";
}
else
{
notesDTO.Notes += newLine + sb.AppendLine(insertedDate).ToString() + " " + polNotes + "\n";
}
db.SaveChanges();
}
//Save TempData message
TempData["SM"] = "Policy saved correctly!";
//redirect
return RedirectToAction("CompletedPolicies");
}
Проблема:
Не работает.Он не передает значения в контроллер.Это ноль каждый раз.Я пробовал кучу разных вызовов ajax. Ничего не работает.Я могу захватить идентификатор, но не текст, и когда он достигает контроллера, он становится нулевым.Если это не так, как я могу просто отправить идентификатор строки .. и текст, напечатанный в текстовом поле, в контроллер.