Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用<;按钮>;和jquery_C#_Jquery_Asp.net Mvc - Fatal编程技术网

C# 使用<;按钮>;和jquery

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功能时,我能够进入控制器方法:

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函数。我会调查的。谢谢