MVC C#Razor中的链接按钮等效物

MVC C#Razor中的链接按钮等效物,c#,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net Mvc,Asp.net Mvc 4,Razor,我正在将一个web表单转换为MVC#razor项目。我想知道如何在Razor中获得相同的功能,它将创建一个链接并将表单插入同一页面。web表单代码是- <asp:LinkButton ID="lnkBtn_1" runat="server" Text='<%#Eval("Sales") %>' OnCommand="LinkButton1_Command" CommandArgument='<%#Eval("Sales") %>' ></asp:Link

我正在将一个web表单转换为MVC#razor项目。我想知道如何在Razor中获得相同的功能,它将创建一个链接并将表单插入同一页面。web表单代码是-

<asp:LinkButton ID="lnkBtn_1" runat="server" Text='<%#Eval("Sales") %>' OnCommand="LinkButton1_Command" CommandArgument='<%#Eval("Sales") %>' ></asp:LinkButton>


提前感谢

您可以编写锚定标签。但是单击锚标记通常不会提交表单,而是触发HTTP GET请求。因此,您需要编写一些java脚本来完成表单提交

<form action="Customer/Create">
   <a href="#" id="linkToSubmit">Submit</a>
</form>
现在,您可以在
客户
控制器中的
创建
操作方法的HttpPost操作中执行代码(因为这是表单的
操作
设置为)

另一种选择是将“提交”按钮保留在表单中,并对其进行样式设置,使其看起来像所解释的链接。

试试这个

@Html.ActionLink("buttonText", "ControllerAction", "YourController ", 
         new { @sales = YourModel.Parameter}, new { @class =yourcssclass" })
你的控制器

public class YourController : Controller
{
public ActionResult Index()
 {
        var model = YourDataToDisplay;

        return View(model);
 }
public ActionResult ControllerAction(int sales)
{
    //.....
}
}

您可以使用ViewData定义ButtonText。

在rezor中使用链接按钮有很多种方法,请尝试其中任何一种

链接按钮
@ActionLink(“文本”、“ActionResult”、“控制器”)
将表单提交到同一页面时,必须使用Ajax Begin表单或使用带有Ajax post方法的简单json对象。像这样试试

$("#btnSave").click(function (e) {

var urlpath = '@Url.Action("ActionResult", "Controller")';
$.ajax({
    url: urlpath ,
    type: "POST",
    data: JSON.stringify({ 'Options': someData}),
    dataType: "json",

    contentType: "application/json; charset=utf-8",
    success: function (data) {
        if (data.status == "Success") {
            alert("Done");

        } else {
            alert("Error occurs on the Database level!");
        }
    },
    error: function () {
        alert("An error !!!");
    }
});

如果您是mvc新手,那么您需要从mvc教程中检查它的基本功能:请按照下面的线程将您的web应用程序代码转换为mvc

@ActionLink(“buttonText”,new{controller=“ControlelerName”,action=“ActionName”, @sales=“您的参数”})


然后在您的控制器中生成一个操作结果

我已经有了一个httppost操作-[httppost]公共操作结果ApReport(ApReport Ddl){…},只要表单字段名与ApReport类的属性名匹配,我将如何获取此httppostAs中提交的值,模型绑定将负责将发布的表单值映射到Ddl对象。我在模型类(公共字符串linkToSubmit{get;set;})和类内部(字符串lnkBtn;lnkBtn=Request.form[“linkToSubmit”];)中添加了这些值,但在单击链接后,它不会向控制器提交任何值,回到同一页面,您不需要将
linkToSubmit
添加到视图模型类中吗?是否要将表单字段值传递给操作方法?此外,您不需要读取诸如
Request.Form
之类的值。MVC模型绑定会照顾到您。我强烈建议阅读一些关于模型绑定工作原理的书籍,然后进一步编写代码。开始。添加模型名时出现编译错误您必须在视图@model Classes.YourModel顶部添加对模型的引用
$("#btnSave").click(function (e) {

var urlpath = '@Url.Action("ActionResult", "Controller")';
$.ajax({
    url: urlpath ,
    type: "POST",
    data: JSON.stringify({ 'Options': someData}),
    dataType: "json",

    contentType: "application/json; charset=utf-8",
    success: function (data) {
        if (data.status == "Success") {
            alert("Done");

        } else {
            alert("Error occurs on the Database level!");
        }
    },
    error: function () {
        alert("An error !!!");
    }
});