好人啊,主题是这样的:
我有这个从 SQL 中获取以下列表的方法:
public ActionResult Index()
{
return View(db.ZService.ToList());
}
这个列表是通过 Ajax 从另一个视图调用的:
<script type="text/javascript">
function GetAjax()
{
//toma la acción y el controllador donde se encuentra
$.get('@Url.Action("Index","ZServices")', function (data) {
$("#ajaxcontent").html(data);
});
}
</script>
列表中的每个项目都有一个“添加”按钮,我想要的是当我按下该按钮时,我可以获得该特定项目的 Id 并能够将其传递给控制器以进行新查询:
[HttpPost]
public ActionResult Agregar(string id)
{
var q = (from g in db.ZService
join ga in db.ZServiceOptions on
g.serviceid equals ga.serviceid where ga.value == id /*aca iría el id que tomaría dinámicamente*/
select g).ToList();
//q.CommandType = CommandType.StoredProcedure;
return View(q);
}
这将是带有按钮的列表的 html 视图
@foreach (var item in Model)
{
<ul>
<li>
<span>@Html.DisplayFor(modelItem => item.name)</span>
<a type="submit" class="btnagre" name="Guardar"
value="Agregar">agregar</a>
</li>
</ul>
}
有没有人有任何想法?
您可以做的是像这样将 id 发送到
Action
Add<a ...> ... </a>
,将其替换为以下内容:使用 HTML 助手
html helper
ActionLink()
允许您传入它的第三个参数,在routeValues
其中您可以指定路由的参数,在您的情况下是Action
Add parameter 。在 MSDN 上查看在第四个参数中定义
htmlAttributes
,例如CSS
它将使用的类以及该链接将具有的名称或 ID。不使用 Html Helper
注意: 我不知道您的控制器的名称,无论如何,请将其在 href 中替换为
TuController
任何名称。您应该做的是在视图中包含您将通过单击按钮调用的项目的 ID。
首先,我不会使用上面推荐的助手,它们很舒服而且非常有用,但是如果有一天你必须迁移你的视图,它们将与框架/库强耦合。为此,在另一个环境中进行可能的迁移(更改语言、框架、库等)将非常麻烦
为了回答您的问题,我要做的是向 a 元素添加一个属性(或使用通常的 href),然后重定向到响应此请求的 Get 类型视图,或取消 Get 并获取该 href 以获取ajax 的视图/数据,例如处理并在弹出窗口中显示。
问候。