我不知道怎么说这个,但这里什么都没有。
我有一个控制器,它有两个参数:FindingId,TagId
public JsonResult Add(int FindingId, int TagId)
我有一个Ajax ActionLink来调用它:
<%: Ajax.ActionLink( "Add", "Add", "FindingTag",
new { FindingId = Model.FindingId },
new AjaxOptions {
HttpMethod = "Post"
})
%>
然后我有一个可用标签的下拉列表:
<%: Html.DropDownListFor(m => m, Model.AvailableTags, "Select Option..", new { id = "finding_" + Model.FindingId + "_AvailableTags" } )%>
参数以下列方式填充:
上面你可以看到我在渲染模型时填充了FindingId,因为在这个小节中它总是相同的。对于不同的Findings,此视图将被多次呈现,以便FindingId将根据模型进行更改。
然而,TagId应该来自DropDownList的选定值。
我没有将此特定请求映射到要传递的viewmodel,因此下拉列表未绑定到特定属性。我也为
创建了一条路线/FindingTag/Add/{FindingId}/{TagId}
所以这里有一些问题已经打开,我真的希望有人可以帮助我,因为这些东西对我来说真的很了解。
1)我发现href被渲染为Add?FindingId = ##我很好奇我是否可以强制渲染为Add / ##
2)是否有更简单的方法可以从下拉列表中获取值以附加到href以创建上述路由?
项目中大部分时间我一直在使用jQuery进行ajax调用,所以我只是从头开始手动构建一个URL,但我真的希望使用MS版本进行练习。这看起来是不合理的吗?如果您有任何建议或见解,请告诉我。
修改
我不确定这是否可以解决这个问题。我发现有人说要使用表单并提交,但如果我将其作为已经强类型的局部视图的子部分,我如何将这些值以我可以使用的形式发送回来完整的模型?如果可能的话,我宁愿将它保留为2个参数而不是复杂的对象。