asp.net MVC 问题, 请各位大侠们解答, 谢谢咯..

lengxiezi 2010-09-09 08:34:53
controller


public ActionResult ManagerProvince()
{
return this.View(this.operate.GetProvince());
}

[HttpPost]
[ActionName("ManagerProvince")]
public ActionResult DeleteProvince(int provinceID)
{
if (provinceID > 0)
{
this.operate.DeleteProvince(provinceID);
}
return this.View(this.operate.GetProvince());
}

[HttpPost]
[ActionName("ManagerProvince")]
public ActionResult EditProvince(int provinceID, string provinceName)
{
if (!String.IsNullOrEmpty(provinceName))
{
this.operate.EditProvince(provinceID, provinceName);
}
return this.View(this.operate.GetProvince());
}


View

<body>
<div>
<form action="" method="post">
<%if (this.Model!=null)
{
foreach (Province item in this.Model)
{
%>
省份:  <%= item.ProvinceName%>    <input type="submit" value="删除" />    
省份:  <input type="text" name="provinceName" /><input type="submit" value="修改" />
<input type="hidden" name="provinceID" value="<%= item.ProvinceID %>" /><br /><br />
<%
}
} %>
</form>
</div>
</body>

点删除后出现:

“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------

对控制器类型“ManagerController”的操作“ManagerProvince”的当前请求在下列操作方法之间不明确:
类型 Admin64666.Controllers.ManagerController 的 System.Web.Mvc.ActionResult DeleteProvince(Int32)
类型 Admin64666.Controllers.ManagerController 的 System.Web.Mvc.ActionResult EditProvince(Int32, System.String)
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Reflection.AmbiguousMatchException: 对控制器类型“ManagerController”的操作“ManagerProvince”的当前请求在下列操作方法之间不明确:
类型 Admin64666.Controllers.ManagerController 的 System.Web.Mvc.ActionResult DeleteProvince(Int32)
类型 Admin64666.Controllers.ManagerController 的 System.Web.Mvc.ActionResult EditProvince(Int32, System.String)

源错误:

执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

堆栈跟踪:


[AmbiguousMatchException: 对控制器类型“ManagerController”的操作“ManagerProvince”的当前请求在下列操作方法之间不明确:
类型 Admin64666.Controllers.ManagerController 的 System.Web.Mvc.ActionResult DeleteProvince(Int32)
类型 Admin64666.Controllers.ManagerController 的 System.Web.Mvc.ActionResult EditProvince(Int32, System.String)]




...全文
297 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
owenxin26 2010-09-10
  • 打赏
  • 举报
回复
如果看得惯英文的话,Wrox出版社的《Professional ASP.NET MVC 2》是半官方背景的学习书,作者很多都在微软的MVC开发组。

http://www.asp.net/mvc
这里可以找到免费文字和视频教程,包括三个实例:NerdDinner,MVC MusicStore,Microsoft TownHall

其中TownHall的例子比较高阶一点,考虑到了应用的扩展性、多平台和Azure云存储,属于MVC的企业级应用了。


中文的教程不太清除,网上搜一下估计也很多。NerdDinner这个例子应该会有中文翻译版。
lengxiezi 2010-09-09
  • 打赏
  • 举报
回复
楼上, 买什么书好呢??
owenxin26 2010-09-09
  • 打赏
  • 举报
回复
你的写法就不对,而且为什么不利用现成的HTML helper,而是手动写form元素呢,完全没必要。

form action="",没指定action,建议用Html.BeginForm()代替。

[ActionName("ManagerProvince")]
public ActionResult DeleteProvince(int provinceID)
看不出任何需要重命名Action的理由。

<input type="submit" value="删除" />
<input type="submit" value="修改" />
一个表里面有两个submit,但后台没有任何处理逻辑区分到底是哪个submit提交的。而且Submit只有value属性,没有name属性,这样后台也没法进行处理。

<input type="hidden" name="provinceID" value="<%= item.ProvinceID %>" />
这个也是多余的,ID可以直接从Route中获取。



这种情况最常用的做法是写两个form表单,每个表单只放一个submit,分别对应Edit的Action和Delete的Action,建议你买本书好好看看例子,不要想当然的自己来写。


lengxiezi 2010-09-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 claymore1114 的回复:]
<input type="submit" 怎么两个submit??
[/Quote]

提交的话, 是需要两个的啊, 一个删除提交, 一个修改提交.?
lengxiezi 2010-09-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 claymore1114 的回复:]
[ActionName("ManagerProvince")] 也有两个
[/Quote]

是有两个啊, 但是方法的名称都不一样的啊, 接收的参数也不同啊.
public ActionResult DeleteProvince(int provinceID)
public ActionResult EditProvince(int provinceID, string provinceName)
claymore1114 2010-09-09
  • 打赏
  • 举报
回复
[ActionName("ManagerProvince")] 也有两个
claymore1114 2010-09-09
  • 打赏
  • 举报
回复
<input type="submit" 怎么两个submit??

62,272

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧