我有以下Action方法
public ViewResult Index()
public ActionResult Edit(decimal id)
当用户点击“编辑”链接时,我想调用Edit
操作。以下是示例代码段
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ItemID }) |
@Html.ActionLink("Details", "Details", new { id=item.ItemID }) |
@Html.ActionLink("Delete", "Delete", new { id= item.ItemID})
</td>
重定向到的网址是http://MyServer/Orders/Details/0.020
使用此URL,我的操作方法不会调用。如果我手动编辑URL以删除“。”然后我的方法接到电话。
我的问题是传递小数值以调用Action方法的正确方法是什么?
答案 0 :(得分:3)
最好的方法是使用查询字符串传递它:
http://MyServer/Orders/Details?id=0.20
您是如何定义路线的?从路由中删除id,ActionLink将其添加为查询字符串。
答案 1 :(得分:2)
尝试自定义Decimal Model Binder,Phil Haack的一篇精彩文章
abastract -
public class DecimalModelBinder : IModelBinder {
public object BindModel(ControllerContext controllerContext,
ModelBindingContext bindingContext) {
ValueProviderResult valueResult = bindingContext.ValueProvider
.GetValue(bindingContext.ModelName);
ModelState modelState = new ModelState { Value = valueResult };
object actualValue = null;
try {
actualValue = Convert.ToDecimal(valueResult.AttemptedValue,
CultureInfo.CurrentCulture);
}
catch (FormatException e) {
modelState.Errors.Add(e);
}
bindingContext.ModelState.Add(bindingContext.ModelName, modelState);
return actualValue;
}
}
答案 2 :(得分:0)
在system.webServer / handlers元素中将以下行添加到站点的web.config
<add name="ApiURIs-ISAPI-Integrated-4.0"
path="*"
verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
答案 3 :(得分:0)
您可以在View中输入文字。我已经将它用于任何类型,并且效果出色。
id=(decimal) item.ItemID