C# 使用<;按钮>;和jquery
我有一个引导模式,它有许多按钮,可以帮助下载不同格式的文件。当我使用如下设置onclick功能时,我能够进入控制器方法:C# 使用<;按钮>;和jquery,c#,jquery,asp.net-mvc,C#,Jquery,Asp.net Mvc,我有一个引导模式,它有许多按钮,可以帮助下载不同格式的文件。当我使用如下设置onclick功能时,我能够进入控制器方法: onclick="location.href='@Url.Action("DownloadAsJPG", "Home")'" 我想做一些基于条件的文件下载,基于按下的按钮,因此我想通过设置按钮的value属性传递一个参数 HTML: <button type="button" id="tojpg" class="btn btn-outline-primary" val
onclick="location.href='@Url.Action("DownloadAsJPG", "Home")'"
我想做一些基于条件的文件下载,基于按下的按钮,因此我想通过设置按钮的value属性传递一个参数
HTML:
<button type="button" id="tojpg" class="btn btn-outline-primary" value="jpg">JPG</button>
<button type="button" class="btn btn-outline-primary" value="jpgcmyk">JPG-CMYK</button>
<button type="button" class="btn btn-outline-primary" value="jpgrgb">JPG-RGB</button>
public FileResult DownloadAsJpg(string argument)
{ Some action }
我试着玩我在stackoverflow问题上找到的jquery,这对我也没有帮助,我无法使用这个jquery访问控制器
Jquery
$('#tojpg').click(function (e) {
e.preventDefault();
window.location = '/Home/DownloadAsJpg?argument=' + $('#tojpg').val();
});
任何提示都将不胜感激 如果您可以用
onclick="location.href='@Url.Action("DownloadAsJPG", "Home")'"
只想传递一些参数。你也可以这样做
onclick="location.href='@Url.Action("DownloadAsJPG", "Home", new { argument = "tojpg" })'"
或者借助Jquery事件
编辑
尝试将事件包装到$(document).ready()
中。根据我的经验,大多数情况下,事件不起作用的原因是事件绑定发生时按钮尚未创建
$(document).ready(function() {
$('#tojpg').click(function (e) {
e.preventDefault();
location.href = '@Url.Action("DownloadAsJPG", "Home", new { argument = "tojpg" })';
});
}
如果您不想为每个按钮选项编写单独的事件,您可以创建如下内容
<button type="button" class="btn btn-outline-primary" value="jpg">JPG</button>
<button type="button" class="btn btn-outline-primary" value="jpgcmyk">JPG-CMYK</button>
<button type="button" class="btn btn-outline-primary" value="jpgrgb">JPG-RGB</button>
如果你能用手机联系到控制器,那就行了。
onclick="location.href='@Url.Action("DownloadAsJPG", "Home")'"
只想传递一些参数。你也可以这样做
onclick="location.href='@Url.Action("DownloadAsJPG", "Home", new { argument = "tojpg" })'"
或者借助Jquery事件
编辑
尝试将事件包装到$(document).ready()
中。根据我的经验,大多数情况下,事件不起作用的原因是事件绑定发生时按钮尚未创建
$(document).ready(function() {
$('#tojpg').click(function (e) {
e.preventDefault();
location.href = '@Url.Action("DownloadAsJPG", "Home", new { argument = "tojpg" })';
});
}
如果您不想为每个按钮选项编写单独的事件,您可以创建如下内容
<button type="button" class="btn btn-outline-primary" value="jpg">JPG</button>
<button type="button" class="btn btn-outline-primary" value="jpgcmyk">JPG-CMYK</button>
<button type="button" class="btn btn-outline-primary" value="jpgrgb">JPG-RGB</button>
这应该行得通。有两种方法可以解决这个问题: 选项1
不是表单发布的数据的一部分。这就是为什么它不会出现在服务器端。您应该将其更改为如下输入:
此字段的名称应与操作中参数的名称相同。因为这是一个输入
-字段,所以浏览器会将其与整个帖子一起发送。这就是你提到的帖子正在做的事情
选项2
如果要改用window.location
,则需要确保该操作允许GET请求,并将参数作为查询字符串传入:
有两种方法可以解决此问题:
选项1
不是表单发布的数据的一部分。这就是为什么它不会出现在服务器端。您应该将其更改为如下输入:
此字段的名称应与操作中参数的名称相同。因为这是一个输入
-字段,所以浏览器会将其与整个帖子一起发送。这就是你提到的帖子正在做的事情
选项2
如果要改用window.location
,则需要确保该操作允许GET请求,并将参数作为查询字符串传入:
onclick=“location.href=”@Url.Action(“DownloadAsJPG”,“Home”,new{argument=“jpg”})“
您的Url中是否可能遗漏了/api/
?因此,url是类似smth的/Api/Home/DownloadAsJpg?参数=
。你得到了什么错误?@Fabjan,我在函数中添加了一个警报,它似乎没有捕获按钮事件。我不确定这是否是因为引导模式。我正在检查这个。您显示的代码运行良好(尽管有更好的方法)。您在浏览器控制台中遇到了什么错误?@StephenMuecke,没有错误,您能告诉我正确的方法吗?您可以使用@Html.Actionlink(“JPG”,“DownloadAsJPG”,“Home”,new{argument=“JPG”},new{@class=“btn btn outline primary”}
。不需要使用javascript。您是否可能错过了url中的/api/
?因此,url是类似smth的/Api/Home/DownloadAsJpg?参数=
。你得到了什么错误?@Fabjan,我在函数中添加了一个警报,它似乎没有捕获按钮事件。我不确定这是否是因为引导模式。我正在检查这个。您显示的代码运行良好(尽管有更好的方法)。您在浏览器控制台中遇到了什么错误?@StephenMuecke,没有错误,您能告诉我正确的方法吗?您可以使用@Html.Actionlink(“JPG”,“DownloadAsJPG”,“Home”,new{argument=“JPG”},new{@class=“btn btn outline primary”}
。没有必要使用javascript。我使用了第二个建议。由于某些原因,我无法启动jquery函数。我会调查的。ThanksI使用了第二个建议。由于某些原因,我无法启动jquery函数。我会调查的。谢谢