【问题标题】:'System.Web.Mvc.HtmlHelper' has no applicable method named 'TextBox'“System.Web.Mvc.HtmlHelper”没有名为“TextBox”的适用方法
【发布时间】:2014-04-10 09:26:31
【问题描述】:

这是我在 MVC2 中的第一个应用程序。以下是我的视图、控制器和另一个显示输出的视图。

StartPage.aspx

<form action="DisplayCustomer" method="post">
    Enter customer id :- <input type="text" name="Id" /> <br />
    Enter customer code :- <input type="text" name="CustomerCode" /><br />
    Enter customer Amount :-<input type="text" name="Amount" /><br />
    <input type="submit" value="Submit customer data" />
</form>

CustomerController.cs

public class CustomerController : Controller
{
    [HttpPost]
    public ViewResult DisplayCustomer()
    {
        Customer objCustomer = new Customer();
        objCustomer.Id = Convert.ToInt16(Request.Form["Id"].ToString());
        objCustomer.CustomerCode = Request.Form["Id"].ToString();
        objCustomer.Amount = Convert.ToDouble(Request.Form["Amount"].ToString()); ;
        return View("DisplayCustomer", objCustomer);
    }
}

DisplayCustomer.aspx

<div>
    The customer Name is <%= Model.Name %> <br />
    The customer Code is <%= Model.Code %> <br />
    <% if (Model.Amount > 100) {%>
    This is a privileged customer
    <% } else{ %>
    This is a normal customer
    <%} %>
</div>

上述方法对我很有效。但我想将其更改为以下内容,就像我正在关注的教程中的那样。我还在这里包含了错误消息。


以下是我想要的样子

StartPage.aspx

<% using (Html.BeginForm("DisplayCustomer","Customer",FormMethod.Post))
{ %>
    Enter customer id :- <%= Html.TextBox("Id",Model)%> <br />
    Enter customer code :- <%= Html.TextBox("CustomerCode",Model) %><br />
    Enter customer Amount :- <%= Html.TextBox("Amount",Model) %><br />
    <input type="submit" value="Submit customer data" />
<%} %>

错误信息

'System.Web.Mvc.HtmlHelper' 没有名为的适用方法 'TextBox' 但似乎具有该名称的扩展方法。 扩展方法不能动态调度。考虑铸造 动态参数或调用扩展方法而不 扩展方法语法。

CustomerController.cs

[HttpPost]
public ActionResult DisplayCustomer(Customer obj)
{
    return View(obj);
}

我已经提供了我在此处关注的教程的链接。在该教程中,LAB5 是我一直面临的问题,位于页面底部。
http://www.codeproject.com/Articles/207797/Learn-MVC-Model-View-Controller-step-by-step-in-7?fid=1631845&df=90&mpp=25&sort=Position&spc=Relaxed&tid=4684984

在这里发帖之前我已经尝试了很多,没有用。请帮忙。请记住,我是 MVC 新手,这是我的第一个应用程序。

【问题讨论】:

  • 这看起来不是一个特别好的教程(为什么不使用Razor,为什么在 TextBoxFor 是显而易见的选择时使用 TextBox)。你为什么不在asp.net/mvc上使用微软官方的@

标签: c# asp.net asp.net-mvc


【解决方案1】:

目前MVC 5已经发布,你有更完整的MVC3和有很多移动功能的MVC4!为什么不迁移到最新版本?

或者请安装 MVC 3 www.asp.net/mvc 然后更正你的视图如下

  <% using (Html.BeginForm("DisplayCustomer","Customer",FormMethod.Post))
 { %>
     Enter customer id :- <%= Html.TextBoxFor(model=>model.Id)%> <br />
     Enter customer code :- <%= Html.TextBoxFor(model=>model.CustomerCode) %><br />
     Enter customer Amount :- <%= Html.TextBoxFor(model=>model.Amount) %><br />
     <input type="submit" value="Submit customer data" />
<%} %>

【讨论】:

  • 海贝拉什。我已经尝试过你的方法。但得到以下错误。 表达式树可能不包含动态操作
  • @krishna 你的Modeldynamic?为什么?
  • @Luaan 我可以告诉你一件事 Luaan。我很困惑为什么我的模型是动态的。在过去的 6 个月里,我一直在学习 ASP.net,从昨天开始尝试学习 MVC。我绝望了。你能给我一个建议吗,比如一个好的教程或电子书的链接……像 tat.. 请 :(
  • @krishna 我会使用 Liam 在asp.net/mvc 建议的教程。如果可以,请使用最新的 MVC 版本。此外,如果可以的话,使用 Razor (*.cshtml) 而不是旧的 ASP.NET 引擎 (*.aspx),它更方便并且减少了你需要的特殊字符的数量(而不是 &lt;%= ... %&gt;,你刚刚@...)。
  • @krishna 我遇到了同样的问题,我将我的 View 设为强类型(在你的情况下我可以说是 Model 类型),问题就消失了。
【解决方案2】:

我怀疑您可能正在使用未与模型绑定的普通视图。您需要使用将视图绑定到模型的强类型视图,如此处的“客户”模型,然后编写 HTML 帮助程序。

【讨论】:

  • 欢迎使用 SO,请将答案连同简单的代码示例一起发布,或参考有关强类型视图的相关 SO 答案。例如,@model 客户
猜你喜欢
  • 2015-04-12
  • 1970-01-01
  • 2011-10-16
  • 2012-08-16
  • 2014-01-29
  • 1970-01-01
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多