这就是我要做的
我有一行具有打开按钮的项目,该按钮应打开一个对话框,其中包含该项目,但我无法正确发布该网址。
在将此图添加到此问题时,我看到了stackoverflow如何弹出一个对话框,这正是我需要做的。我的问题是我需要将网址设为/controller/action?id= (id being passed in)
,但我得到的网址是/controller/action?/7
,或者如果我重写动作,我会/controller/action?/7
如何摆脱斜线或正确发布?
ActionLink的
@Html.ActionLink("Open", "AddItems", new { id = item.ID }, new { @id =
"Itemdialog" })
的jQuery
$('#dialog').dialog({
autoOpen: false,
width: 400,
resizable: false,
modal: true
});
$('#Itemdialog').on("click", function () {
var url = $(this).attr('href');
$('#dialog').load(url, function () {
$(this).dialog('open');
});
return false;
});
控制器:
public ActionResult AddItems(int id)
{
var TradeItem = from i in db.Items
where i.ID == id
select i;
var results = TItem;
return PartialView("_OpenItem", results); //need to open in dialog
}
查看
@model IEnumerable<Item>
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.ID)
</th>
<th>
@Html.DisplayNameFor(model => model.user_id)
</th>
<th>
@Html.DisplayNameFor(model => model.item_name)
</th>
<th>
@Html.DisplayNameFor(model => model.item_description)
</th>
<th>
@Html.DisplayNameFor(model => model.item_code)
</th>
<th>
@Html.DisplayNameFor(model => model.dateAdded)
</th>
<th>
@Html.DisplayNameFor(model => model.catId)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.ID)
</td>
<td>
@Html.DisplayFor(modelItem => item.user_id)
</td>
<td>
@Html.DisplayFor(modelItem => item.item_name)
</td>
<td>
@Html.DisplayFor(modelItem => item.item_description)
</td>
<td>
@Html.DisplayFor(modelItem => item.item_code)
</td>
<td>
@Html.DisplayFor(modelItem => item.dateAdded)
</td>
<td>
@Html.DisplayFor(modelItem => item.catId)
</td>
</tr>
}
</table>
@Html.ActionLink(send to db )
答案 0 :(得分:1)
您可以将routeValues
留空,只需将查询字符串附加到结尾:
<a id="Itemdialog" href='@Url.Action("AddItems")?id=@item.ID'>Open</a>
我认为这是设置查询字符串的一种更直接的方法 - 使用routeValues
意味着您希望根据路由定义构建URL。