【发布时间】:2019-09-27 08:30:25
【问题描述】:
我需要我的模型中的 ID @item.errorId 在提交表单时循环 foreach 以传递,因为必须将提交的表单跟踪回确切的行。
我尝试创建一个单页应用程序。
这是我创建表格的 CSHTML
<tbody>
@foreach (var item in Model.LogItems)
{
<tr href="#/" onclick="createTicket('@HttpUtility.JavaScriptStringEncode(item.Type)', '@HttpUtility.JavaScriptStringEncode(item.TimeUtc.ToString())', '@HttpUtility.JavaScriptStringEncode(item.Host)', '@HttpUtility.JavaScriptStringEncode(item.Message)', '@HttpUtility.JavaScriptStringEncode(item.Source)', '@HttpUtility.JavaScriptStringEncode(item.User)', '@HttpUtility.JavaScriptStringEncode(item.AllXml)', '@HttpUtility.JavaScriptStringEncode(item.ErrorId.ToString())')" style="cursor: pointer">
<td scope="row"> @(rowNo += 1) </td>
<td style="white-space: nowrap;">
@item.TimeUtc
</td>
<td style="word-wrap:break-word; max-width: 250px;">
@item.Type
</td>
<td>@item.Host</td>
<td style="max-width: 200px; word-wrap:break-word;"> @item.Message</td>
<td>
@item.Source
</td>
@if (item.User != "")
{
<td>@item.User</td>
}
else
{
<td><i>null</i></td>
}
<td>@item.AllXml.Split('"')[1].Split('"')[0]...</td>
<td style="white-space: nowrap;"> <button class="btn btn-link btn-xs">Dismiss</button></td>
</tr>
}
</tbody>
Javascript 处理将值传递给innerHtml 并显示“窗口”的 onClick
function createTicket(type, time, host, message, source, user, xml, errorid) {
if (ticketSwitch == true) {
popup.style.visibility = "visible";
cardHeader.innerHTML = type;
timeForLogs.innerHTML = time;
cardHost.innerHTML = host;
cardMessage.innerHTML = message;
cardSource.innerHTML = source;
cardUser.innerHTML = user;
cardText.innerText = xml;
id.innerHTML = errorid;
ticketSwitch = false;
}
}
点击行后,我们得到这个
我们可以点击门票标签
这是 CSHTML BeginForm
@using (Html.BeginForm("Index", "Ticket", FormMethod.Post))
{
<div>
<br />
<div style="background-color:#2C3E5070; color: white; padding: 3px; border-radius:3px; font-weight: 300;">
<a style="font-size: 0.9em">Create Issue</a>
</div>
<br />
<form>
<span style="font-size: 0.8em">Project<sup class="star">*</sup></span> @Html.DropDownListFor(m => model.fields.project.key, (IEnumerable<SelectListItem>)ViewBag.Projects, "<select>", new { @class = "form-control input-sm my-size-text-area input-background" })
<br />
<span style="font-size: 0.8em">Issue type</span> @Html.DropDownListFor(m => model.fields.issuetype.name, new List<SelectListItem> { new SelectListItem { Text = "Bug", Value = "Bug" }, new SelectListItem { Text = "Feature", Value = "Feature" }, new SelectListItem { Text = "Task", Value = "Task" }, }, new { @class = "form-control input-sm my-size-text-area input-background" })
<br />
<span style="font-size: 0.8em">Assignee<sup class="star">*</sup></span> @Html.DropDownListFor(m => model.fields.assignee.name, (IEnumerable<SelectListItem>)ViewBag.Users, "<select>", new { @class = "form-control input-sm my-size-text-area input-background" })
<br />
<span style="font-size: 0.8em">Summary<sup class="star">*</sup></span>@Html.TextBoxFor(m => model.fields.summary, new { @class = "form-control input-sm my-size-text-area input-background" })
<br />
<div class="form-group">
<span style="font-size: 0.8em">Description<sup class="star">*</sup></span> @Html.TextAreaFor(m => model.fields.description, 5, 60, new { @class = "form-control my-size-text-area input-background" })
</div>
<br />
<input style="font-size: 0.8em !important;" onclick="loadingOverlay()" id="Submit" class="btn btn-primary float-right" type="submit" value="Create" />
</form>
</div>
}
在提交票证时,我想将从 foreach 获得的 ID 传递到处理我的 POST 请求的控制器中。
最近我要做的就是将它作为一个值传递给
@using (Html.BeginForm("Index", "Ticket", FormMethod.Post))
但这总是会从最后一个 foreach 项目传递 id。
感谢所有帮助
【问题讨论】:
-
请准确说明您的要求。
-
我已经编辑了帖子并尽可能地澄清了。谢谢
-
尝试在具有类名的行上单击事件,在那里声明您自己的属性并使用 'this' 关键字在 javascript 中访问它们。这可能是为了解决您的问题。
-
这将返回一个空日志` jQuery(document).ready(function($) { $(".rowId").click(function () { var id = $(this). val(); console.log(id) }); });` 但我可以只记录
this它会返回一个完整的元素,在里面我们得到 value="",但我没有不知道如何访问它 -
你不会这样。在 custome\ 属性中传递你的 errorid,然后像
<tr data-id="{errorid}" ...</tr>和点击事件$(this).data("id")一样访问它。
标签: javascript c# html model-view-controller