按钮中的Html.ActionLink

时间:2012-05-31 10:06:35

标签: c# jquery asp.net-mvc asp.net-mvc-3 razor

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

@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" />

我的观看Edit.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 个答案:

答案 0 :(得分:9)

jQuery中的链接与ActionLink链接不匹配。此外,使用Url.Action时请不要指定单词Controller,它会将其放入您的手中。

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

试试这个:

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

编辑2:我知道问题!您正在将Razor语法与网络表单语法混合使用!试试这个:

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

另一个问题是您尝试在JavaScript文件中执行此操作,您无法在JavaScript文件中使用Razor语法,而是在视图中

答案 1 :(得分:4)

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

使用@ Url.Action(“打印”,“合同”,新{id = Model.SalesContractId})创建链接,即

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

    });

你还有什么地方做过这个?

您的控制器也是合同不打印

答案 2 :(得分:2)

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

假设您只想调用控制器:

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

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

    });

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

否则:

使用Ajax:

身体:

<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>

答案 3 :(得分:0)

这就是我想要的,但谢谢大家。

$('#btnDialogPrint').click(function () {
       window.location = '../Print/' + $('#SalesContractId').val();
    });
相关问题