- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的 json 结果操作的 View ,它由属性 ID、IsChecked 复选框和属性标题列组成。
在此 View 中,我可以选中或取消选中这些复选框。
选中特定的复选框并单击创建宣传册后,我想将这些值传递给另一个 Controller 方法。
例如:假设我检查了前两个结果
property ID | IsChecked
1 | True
2 | True
我想在单击后将上述值发送到另一个 Controller ,我该怎么做。
这是HTML代码
<table class="table">
<thead>
<tr>
<th>Property ID</th>
<th>IsChecked</th>
<th>Property Tile</th>
</tr>
</thead>
<tbody id="table"></tbody>
</table>
<table id="template" class="table" style="display: none;">
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<div style="width:50%; float:left;text-align:left"><button id="resetborchure" type="button" class="btn btn-warning submit">Reset Brochure</button> </div>
<div style="width:50%; float:left;text-align:right"><button id="createborchure" type="button" class="btn btn-danger submit" onclick="location.href='@Url.Action("Create_Brochure", "Brochure")'">Create Brochure</button> </div>
我有以下 json 脚本来从数据表中检索数据
<script type="text/javascript">
var url = '@Url.Action("FetchProductProperties")';
var editUrl = '@Url.Action("Edit")';
var template = $('#template');
var table = $('#table');
$('#search').click(function () {
table.empty();
$.getJSON(url, { function (populated_data) {
$.each(populated_data, function (index, item) {
var clone = template.clone();
var cells = clone.find('td');
cells.eq(0).text(item.ID);
if (item.CheckOrNot === true)
{
cells.eq(1).html("<input type='checkbox' value='1' checked='" + item.CheckOrNot + "'>");
}
else
{
cells.eq(1).html("<input type='checkbox' value='0'>");
}
cells.eq(2).text(item.Name);
table.append(clone.find('tr'));
});
});
});
$('#resetborchure').click(function () {
table.empty();
});
</script>
最佳答案
你还没有展示你的模型或者是什么FetchProductProperties()
正在做,但假设它正在创建一个对象集合(比如)List<ProductPropertyVM>
其中 ProductPropertyVM
包含属性 int ID
, string Title
和 bool IsChecked
那么处理这个问题的最简单方法是返回一个局部 View 而不是 json。例如在 Controller 中
public ActionResult FetchProductProperties(...)
{
List<ProductPropertyVM> data = ..... // your query
return PartialView("_ProductProperty", data);
}
和 _ProductProperty.cshtml
局部 View
@model List<ProductPropertyVM>
<table>
... // thead elements
<tbody>
@for(int i = 0; i < Model.Count; i++)
{
<tr>
<td>
@Html.DisplayFor(m => m[i].ID)
@Html.HiddenFor(m => m[i].ID)
</td>
<td>@Html.CheckBoxFor(m => m[i].IsChecked)</td>
<td>@Html.DisplayFor(m => m[i].Title)</td>
</tr>
}
</tbody>
</table>
.... // buttons
然后在主视图中包含一个占位符来呈现局部
<div id="productproperties"></div>
并将脚本修改为
$('#search').click(function () {
$('#productproperties').load(url, { .... }); // add data to be passed to the method as required
});
如果您确实想通过返回 json 来执行此操作 - 即该方法具有 return Json(data, JsonRequestBehavior.AllowGet);
那么您需要生成具有正确名称属性(包括索引器)的控件。每行的 html 需要是(其中 #
是索引器 - 从零开始,?
是来自 json 数据的值)
<tr>
<td>
<span> // value of ID property </span>
<input type="hidden" name="[#].ID value="?" />
</td>
<td>
<input type="checkbox" name="[#].IsChecked" value="true" />
<input type="hidden" name="[#].IsChecked" value="false" />
</td>
<td>
<span> value of Title property </span>
</td>
</tr>
生成它的最简单方法是将它作为模板放在隐藏的 div
中。 (比如 <div id="template">
)和 form
之外元素。然后在$.each()
函数、克隆模板并更新值,包括更新索引器。
$.each(data, function (index, item) {
var clone = $('#template').clone();
// update indexers
clone.html($(clone).html().replace(/\[#\]/g, '[' + index + ']'));
// update input values as display text
var cells = clone.find('td');
cells.eq(0).children('span').text(item.ID);
cells.eq(0).children('input').val(item.ID);
cells.eq(1).children('input').first().prop('checked', item.IsChecked)
cells.eq(2).children('span').text(item.Title);
table.append(clone.html());
});
引用这个DotNetFiddle json 方法的例子
在这两种情况下,这将回传到一个具有参数 List<ProductPropertyVM> model
的方法
关于javascript - jsonresult 数据集传递给另一个 actionresult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32962404/
我有一个 ActionResult 调用另一个 ActionResult。 我在我的 case 语句中调用了一个 ActionResult,但它不起作用。这是我所拥有的: public Acti
我有一个 ActionResult 扩展,它在返回页面时向 TempData 添加 toast: public static IActionResult WithMessage(this Action
假设我有以下代码,在记事本中模拟,所以请原谅任何小错误:) //Default page public ActionResult Index() { var musicView
我有一个来自数据库的对象,它在我的应用程序的很多地方使用。 实际的精确对象构建起来有点复杂,尤其是在开发过程中,我已经多次更改它。为此,我将方法从 Controller 中提取出来,并构建了一个具有对
我像这样向 GET ActionResult 发送参数: public ActionResult MyFormLetter(string studentName, string teacherName
在 Scott Hanselman 的书中(第 1 章),他为我们提供了两个选项来实现 Create 操作方法的 [HttpPost]。 第一个依赖于 TryUpdateModel 根据传入的表单字段
错误在下面代码的第 5 行: public class FirstController : Controller{ public async Task Index() {
我得到了简单的网络服务应用程序: public class MyController : Controller { public ActionResult balance( int amount)
所以我有这个 Javascript 代码: function AddToStuff(somethingID) { var stuffID = document.getElementById('
我试图在选中复选框时调用 ActionResult,但我不知道为什么它不起作用下面是我的代码。 --复选框 --模态
我正在使用 MVC 4 创建游戏。有一个犯罪功能,但我无法解决。我已经尝试了很多东西,但由于我是 MVC4 的新手,所以我无法弄明白。 我创建了一个单选按钮列表,每个不同的选项应该给出不同的结果。这是
我知道有很多类似的问题,但我没有在其中任何一个中得到我想要的答案。我想按原样将 ActionResult 转换为 String,方法如下: public ActionResult ProductDet
我想从一些操作方法中返回一个强制当前页面刷新的结果。 我写这篇文章是为了获得这样的结果: public class RefreshResult : ActionResult { pu
我使用 MVC 5 返回 Json。到达数据返回点的总时间为 40 毫秒。 然而,即使在服务器上运行它,浏览器也需要 6000 毫秒 才能获取数据。 我的问题是返回值后会发生什么。我正在尝试找出导致速
我创建了一个派生自 ActionResult 的 SitemapResult 类。它允许调用者添加任意数量的 URL 资源,然后以 XML 格式输出站点地图数据。 public class Sitem
例如,对于在线 Web 应用程序,我只需要服务器驱动器 X:\Docs 上文件夹中的文档。有没有一种方法可以让网站上的按钮默认打开 X:\Docs?我试过打开特定文件夹但没有成功: [HttpPost
我的 Controller 中有以下内容; public ActionResult CocktailLoungeBarAttendant() { return View
我是 MVC 的新手,正在尝试从 Controller 调用存储过程。 在模型中,我有 edmx,它将所有存储过程作为函数 Cannot implicitly convert type System.
这个有效: public ActionResult Edit(int id, CompPhone cmpPhn) { var vM = new MyViewModel(); if (cmpPh
假设我有应用程序 .net Core 2.1 Web API + Angular 7 为什么我应该总是返回 ActionResult? 这之间有什么区别吗: public ActionResult G
我是一名优秀的程序员,十分优秀!