我正在将一个Web表单转换为MVC C#razor项目。我想知道如何在Razor中获得相同的功能,它将创建一个链接并将表单汇总到同一页面。网络表单代码是 -
<asp:LinkButton ID="lnkBtn_1" runat="server" Text='<%#Eval("Sales") %>' OnCommand="LinkButton1_Command" CommandArgument='<%#Eval("Sales") %>' ></asp:LinkButton>
提前致谢
答案 0 :(得分:2)
试试这个
@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。
答案 1 :(得分:1)
您可以编写锚标记。但是,单击锚标记通常不会提交表单,但会触发HTTP GET请求。所以你需要编写一些java脚本来进行表单提交。
<form action="Customer/Create">
<a href="#" id="linkToSubmit">Submit</a>
</form>
使用jQuery和一些不显眼的javascript代码绑定此锚标记上的click事件,
$(function(){
$("#linkToSubmit").click(function(e){
e.preventDefault(); // prevent the normal link click behaviour (GET)
$(this).closest("form").submit();
});
});
现在,您可以在Create
控制器中的Customer
操作方法的HttpPost操作中执行代码(,因为这是action
设置为<的形式/ em>的)
另一种选择是将提交按钮保留在表单中并对其进行样式设置,使其看起来像in this answer所解释的链接。
答案 2 :(得分:1)
有许多方法可以在rezor中使用链接按钮,尝试其中任何一种
<button type="button" onclick="@("window.location.href='" +@Url.Action("ActionResult", "Controller") + "'")">
Link Button
</button>
<a href="@Url.Action("ActionResult", "Controller")">
Link Button
</a>
@Html.ActionLink("Text","ActionResult","Controller")
将表单提交到同一页面,您必须使用Ajax Begin Form或使用简单的json对象和ajax post方法。试试这个
$("#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 !!!");
}
});
答案 3 :(得分:1)
如果您是mvc的新手,那么您需要从MVC教程中检查它的基本内容:请按照以下主题将您的Web应用程序代码转换为MVC
@ Html.ActionLink(“buttonText”,new {controller =“ContreollerName”,action =“ActionName”, @sales =“你的参数”})
然后在您的控制器中制作一个动作结果