-5

我正在尝试使用按钮连接到控制器中的方法。我可以通过此链接进行连接:

@Html.ActionLink("Print", "Print", new { id = Model.SalesContractId})

但我不想要一个链接,我希望我的对话框上的按钮来做到这一点。我尝试了以下方法:

$('#btnDialogPrint').click(function () {
        location.href = '<%= Url.Action("Print", "Print", new { id = Model.SalesContractId}) %>'; 

    });

但它只是将我重定向到一个说错误请求的页面。

namespace Contract.Controllers
{

    public class ContractController : Controller
    {

        CompassEntities db = new CompassEntities();

        public ActionResult Print(int id)
        {
            return View(""); // This can be removed and Print code may be added
        }

不要担心里面的代码,一旦我进入这个方法,我就会得到它。

我可以在这里附上一个链接吗?

<input type="button" value="Print" id="btnDialogPrint" />

我的视图编辑.cshtml

@model Contract.Models.tbSalesContract
<!DOCTYPE html>
<html>
<head>
    <title>Edit Contract</title>
</head>
<!-- Script section -->
<script src="@Url.Content("~/Scripts/Views/Contract.js")" type="text/javascript"></script>
<!-- Templates -->
<script id="tmplDebtorList" type="text/x-jquery-tmpl">    
    <div class="DebtorResults">
    <span><div style="width:80px;float:left;">${CustomerAccNo}</div></span><span><a href="#" class="debtorLink" value="${DebtorId}">${CustomerName}</a></span>
    </div>
</script>
<body>
    @using (Html.BeginForm("Edit", "Contract", FormMethod.Post, new { id = "frmMain",name="frmMain" }))
    {
4

4 回答 4

9

您在 jQuery 中的链接与链接不匹配ActionLink。另外,使用时Url.Action不要指定单词Controller,它会为您输入。

编辑:看到您编辑的帖子后,您没有使用正确的控制器。

尝试这个:

$('#btnDialogPrint').click(function () {
    location.href = '<%= Url.Action("Print", "Contract", new { id = Model.SalesContractId}) %>'; 
});

Edit2:我知道问题所在!您将 Razor 语法与 Web 表单语法混合在一起!尝试这个:

$('#btnDialogPrint').click(function () {
    location.href = '@Url.Action("Print", "Contract", new { id = Model.SalesContractId})'; 
});

另一个问题是您尝试在 JavaScript 文件中执行此操作,您不能在必须位于视图中的 JavaScript 文件中使用 Razor 语法

于 2012-05-31T10:08:44.020 回答
4

波斯特; 你混淆了 Razor 和 aspx ..

使用 @Url.Action("Print", "Contract", new { id = Model.SalesContractId}) 创建您的链接,即

$('#btnDialogPrint').click(function () {
        location.href = '@Url.Action("Print", "Contract", new { id = Model.SalesContractId})';

    });

你在哪里做过这个?

此外,您的控制器是合同而不是打印

于 2012-05-31T11:04:27.007 回答
2

您在一个代码片段中使用 Razor,在下一个代码片段中使用 asp。这是故意的吗?

假设您只想调用控制器:

首先尝试在您的代码中更改以下内容:

$('#btnDialogPrint').click(function () {
        location.href = '@Url.Action("Print", "Contract", new { id = Model.SalesContractId})'; 

    });

或者

<%=Html.ActionLink("Print", "Contract", new { id = Model.SalesContractId})%>

否则:

使用阿贾克斯:

体内:

<input type="button" value="Print" id="btnDialogPrint" onclick="print()"/>

在脚本中:

<script type="text/javascript">
    function print() {
            $.get('@Url.Action("Print", "Contract", new { id = Model.SalesContractId})');
        }
</script>
于 2012-05-31T10:53:26.623 回答
0

这就是我一直在寻找的,但谢谢大家。

$('#btnDialogPrint').click(function () {
       window.location = '../Print/' + $('#SalesContractId').val();
    });
于 2012-05-31T12:02:42.030 回答