我列出了一堆车,旁边有一个按钮,点击后需要执行GET,但也会发送该项目的模型。名称:
@using (Html.BeginForm("GetCarUrl", "Car", FormMethod.Get, new { model = Model }))
{
if(Model.Cars != null && Model.Cars.Count > 0)
{
foreach (CarContent car in Model.Cars)
{
<p>@car.Name</p>
}
<input type="button" value="Get Car Url" class="submit" />
}
因此页面呈现了一堆超链接和按钮:
[hyperlink1] [submit]
[hyperlink2] [submit]
[hyperlink3] [submit]
[hyperlink4] [submit]
[hyperlink5] [submit]
...
当用户点击任何提交时,我需要为该特定超链接传回相应的@ car.CarType
不知道如何解决这个问题。我的操作方法需要将特定汽车超链接的@ car.CarType发送给它
更新
这是我的标记:
Html.Hidden("userId", Model.UserId);
Html.Hidden("lessonId", Model.LessonId);
@if(....)
{
foreach (Car car in Model.Cars)
{
using (Html.BeginForm("GetFileDownloadUrl", "Car", FormMethod.Get, new { carFileUrl= car.CarFileUrl}))
{
<p><a href="/Car/@Model.CarId/@Model.UserId/Url">@fileContent.Name</a>
<input type="submit" value="download" name="downloadFile"/>
</p>
}
}
}
这是要点击的动作方法,想要发送userId,CarId和carFileUrl:
[HttpGet]
public string GetFileDownloadUrl(string carFileUrl, int carId, int userId)
{
string downloadUrl = string.Empty;
downloadUrl =GetDownloadUrl(carId, carFileUrl, userId);
return downloadUrl;
}
这是我的路线:
context.MapRoute("CarFileDownload", "Car/{carId}/{userId}/{carFileUrl}", new { controller = "Content", action = "GetFileDownloadUrl", carFileUrl= UrlParameter.Optional, carId = UrlParameter.Optional, userId = UrlParameter.Optional });
当我点击某个按钮时,它不会回复到我的GetDownloadUrl动作方法。
我不知道如果我需要所有这些可选参数设置,我是否只是没有正确的路由设置然后在我的BeginForm中我是否需要再次指定所有这些,因为我有一些他们作为隐藏的字段被回复?在这种情况下,不确定为什么它没有达到我的GetFileDownloadUrl操作方法...
答案 0 :(得分:0)
为汽车类型设置一个隐藏字段,并使用JQuery或类似方法使超链接的click事件设置为汽车类型隐藏字段。
使用“渐进增强”的概念,您可以使页面仍然可以为那些可能没有启用javascript的用户提供功能 - 只需让链接实际执行get并使按钮隐藏即可。然后,使用JQuery覆盖链接的默认行为(如上所述)并使按钮可见。通过这种方式,您将获得所需的行为,但您的页面仍可用于没有javascript的用户。
答案 1 :(得分:0)
没有什么可以阻止您在一个页面中创建多个表单。
if(Model.Cars != null && Model.Cars.Count > 0)
{
foreach (CarContent car in Model.Cars)
{
<div>
@using (Html.BeginForm("GetCarUrl", "Car", FormMethod.Get, new { model = car }))
{
<p>@car.Name</p>
@Html.Hidden("CarId", car.Id)
<input type="submit" value="Get Car Url" class="submit" />
}
</div>
}
}
请注意每种表单model = car