C# 使用asp路由参数的hiddenfield值
我在一个_PartialView中得到了一个隐藏字段,其中包含我想要的值(jQuery将其填充) 我在(foreach)asp路由参数中需要相同的值C# 使用asp路由参数的hiddenfield值,c#,jquery,asp.net-core-mvc,C#,Jquery,Asp.net Core Mvc,我在一个_PartialView中得到了一个隐藏字段,其中包含我想要的值(jQuery将其填充) 我在(foreach)asp路由参数中需要相同的值 <div class="js-products-list"> <input id="cropIdForProdBaseJQ" type="hidden" value="" /> @foreach (var product in Model.Products) { <a asp-controller="
<div class="js-products-list">
<input id="cropIdForProdBaseJQ" type="hidden" value="" />
@foreach (var product in Model.Products)
{
<a asp-controller="XXX" asp-action="YYY" asp-route-language="@Model.CurrentLanguage" asp-route-cropId="" id="productCard">
}
可以吗?我将如何处理这个问题?
谢谢 生成html时使用razor属性。如果您是从javascript中引用此内容,则需要一个在编译页面后保持不变的属性。在您的情况下,这是很棘手的,因为您试图在请求完成后实现路由 相反,将输入值传递给操作的良好语义方式是使用表单,而不是尝试动态构建锚
<form method="get" asp-controller="XXX" asp-action="YYY" asp-route-language="@Model.CurrentLanguage">
<input id="cropIdForProdBaseJQ" type="hidden" value="" />
@foreach (var product in Model.Products)
{
@* Assuming you are doing something useful with "product" here *@
<button name="PassThisId" value="@product.ProductId">Press me!</button>
}
</form>
@foreach(模型产品中的var产品)
{
@*假设你正在做一些有用的“产品”在这里*@
按我!
}
razor视图中的标记助手在服务器上执行,其结果(HTML标记)将发送到浏览器,浏览器将呈现它。因此,此时anhcor标记帮助器已经生成了链接的href属性值
您可以做的是,使用JavaScript覆盖正常的链接单击行为,从页面读取输入元素值,并使用该值构建新URL并导航到该URL
您可以为cropId参数提供一个虚拟值
<a asp-controller="invoices" asp-action="GetData" asp-route-name="@Model.supplierName" asp-route-cropId=1 id="productCard">Click me</a>
通过在a标签中添加数据producttypeId解决了这个问题;将productCard从“id”更改为“类”
@foreach (var product in Model.Products)
{
<a asp-controller="XXX" asp-action="YYY" asp-route-language="@Model.CurrentLanguage" asp-route-cropId="" class="productCard"
data-producttypeId="@product.ProductTypeId">
}
替换字符串会创建一个新字符串,而不是实际替换它。
将新创建的字符串放入href后,一切都很好!
谢谢大家的意见,给了我一些好的线索 如果I Console.log$('#productCard').attr(“asp路由cropId”)代码>在$('#productCard').attr(“asp路由cropId”,neededValue)前后代码>我确实在脚本中获得了正确且更新的值。。但asp路线本身并不乏味
$("#productCard").click(function (e) {
// Stop the normal navigation
e.preventDefault();
//Build the new URL
var url = $(this).attr("href");
var date = $("#cropIdForProdBaseJQ").val();
url = url.replace(1, date);
//Navigate to the new URL
window.location.href = url;
});
@foreach (var product in Model.Products)
{
<a asp-controller="XXX" asp-action="YYY" asp-route-language="@Model.CurrentLanguage" asp-route-cropId="" class="productCard"
data-producttypeId="@product.ProductTypeId">
}
$('.productCard').click(function(e) {
var cropId = $('#croptype-filter-From-ProductType').val();
var clickedCard = $(this);
var baseUrl = clickedCard.attr("href");
var newUrl = baseUrl.replace("crop-ID", cropId);
window.location.href = newUrl;
});