2013-04-11 44 views
2

我想使用按钮而不是ActionLink来重写下面的代码。任何帮助将不胜感激。谢谢。ASP.NET MVC - Razor - 重载带有动作,控制器和html属性的按钮

@Html.ActionLink("Test Link","Index", "Home", new { id = item.id}) 

是否有可能写下类似的东西,还是有更好的方法吗?我也不确定语法,所以请随时纠正它。

<input type="button" value="Submit" onclick="location.href='@Url.Action("Index", "Home", new { id = @Model.FirstorDefault.Id.ToString()}, null)'" /> 
+0

你尝试了一下,发现任何错误? – Sharun 2013-04-11 09:42:17

+1

使用按钮输入的目的是什么? ActionLink应该没问题,你可以用CSS来设计它看起来像一个按钮。 – laszlokiss88 2013-04-11 09:49:33

+0

没有错误,但我在控制器的参数中找不到任何数据。它全部为空。是的,我可以使用ActionLink,但我只是在学习MVC,所以想知道是否有超载按钮。此后我正在考虑定制助手。如果可能,请随时给我一个创建像@ html.button这样的自定义助手的小例子。谢谢 – Ren 2013-04-11 09:58:46

回答

7

将它写为锚标签,因为您似乎想要在点击按钮时重定向用户。如果您愿意,您可以轻松地将锚点设计为看起来像一个按钮。

<a href="@Url.Action("Index", "Home", 
     new { id = Model.FirstorDefault.Id.ToString()})">Submit</a> 

而现在的“提交”的标题是没有意义的,你现在正在做一个“GET”操作而不是“POST”。但是,如果你坚持使用一个按钮,你可以这样做:

<input type="button" value="Submit" id="btn1" /> 

// just replace zero with whatever value you need to use 
$("#btn1").click(function() { 
    window.location.replace('@Url.Action("about", "Home", new { id = 0 })'); 
}); 
+1

@ Html.ActionLink将呈现相同的锚标记。 – laszlokiss88 2013-04-11 09:48:47

+0

只有在给出的解决方案无效的情况下,您才会退步。否则给你自己的解决方案。 @ laszlokiss88 – 2013-04-11 09:53:32

+0

谢谢。是啊。好主意,但我只是懒得做造型。我想使用jquerymobile的数据角色=“按钮”功能..: - D ..只是想知道,是否有可能创建一个像'@ Html.Button'自定义助手,因为剃须刀不提供?你能否给我一个关于如何创建一个简单的自定义助手的小例子? – Ren 2013-04-11 09:54:20

0
<form method="get"action="/Home/Index/@Model.id"> 
    <input id="Submit1" type="submit" value="submit" /> 
</form>