1

我是 MVC(Asp.net)和 JavaScript 的新手。对不起这个主要问题。

<body>
    <div>
    <%--<% Html.BeginForm(); %>--%>
    <table>
    <tr>
        <td><%:Html.LabelFor(t=> t.CustomerID) %></td>
        <td><%:Html.TextBoxFor(t => t.CustomerID, new { ID = "txtCustomerID" })%></td>
    </tr>
    <tr>
        <td><%:Html.LabelFor(t=> t.CustomerName) %></td>
        <td><%:Html.TextBoxFor(t => t.CustomerName, new { ID = "txtCustomerName" })%></td>
    </tr>
    <tr>
        <td>
            <input type="submit" value="Submit" onclick="CheckName()" />
        </td>
    </tr>
</table>
     <%--<% Html.EndForm(); %>--%>
    </div>
</body>

我需要t.CustomerName使用 JavaScript 获得价值。我尝试如下,它给了我错误。

<head runat="server">
    <script type="text/javascript">
        function CheckName() {
            var value = document.getElementById('<%=t.CustomerName%>').value;
            alert(value);
        }

 function SubmitData() {
        var obj = {};
        obj.CustomerID = $("#txtCustomerID").val();
        obj.CustomerName = $("#txtCustomerName").val();

        $.ajax({
            url: "CreateNewRetailCustomer?jsonObject=" + JSON.stringify(obj),
            type: 'POST',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            success: function (result) {
                if (result.status == "successful") {
                    document.location.href = '../';
                }
            }
        });
    }
    </script>
    <title>Create Wholesale Customer</title>
</head>

我写了我的控制器编码如下:

public ActionResult CreateRetailCustomer()
        {

            return View();
        }

         [HttpPost]
        public ActionResult CreateRetailCustomer(RetailCustomer retCust)
        {            
            new CustomerService.CustomerServiceClient().SaveRetailCustomer(retCust);
            return RedirectToAction("Index");
        }

         [HttpPost]
         public JsonResult CreateRetailCustomer(string jsonObject)
         {
             var retailCustomer = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<Models.RetailCustomer>(jsonObject);
             new CustomerService.CustomerServiceClient().SaveRetailCustomer(retailCustomer);
             return Json(new { status = "successful" }, JsonRequestBehavior.AllowGet);             
         }


        [HttpGet]
        public JsonResult GetCustomerList()
        {
            var custlist = new CustomerService.CustomerServiceClient().GetCustomer().Select(m => new { CustomerId = m.CustomerId, CustomerName = m.CustomerName});
            return Json(custlist, JsonRequestBehavior.AllowGet);
        }

错误:

编译服务此请求所需的资源期间发生错误。请查看以下特定错误详细信息并适当修改您的源代码。

我搜索并发现了类似的问题asp.net mvc get value from Html.textbox() here。但它没有讨论如何从中获得价值,Html.TextBoxFor那么我该怎么做呢?

4

2 回答 2

4
var value = document.getElementById('<%=t.CustomerName%>').value;

此行导致错误。ASP.NET MVC 不会像在 Web 窗体中那样生成随机客户端 ID。它们将是您模型中的相同属性名称。这条线就是你要找的:

var value = document.getElementById('CustomerName').value;

HTML 助手也喜欢TextBoxFor()将一些委托作为参数。t您尝试使用的变量在 lambda 表达式的上下文中是有意义的(一种创建委托和表达式的快捷方式)。如果要访问模型属性,请使用Model变量。

于 2013-04-27T19:58:48.737 回答
4

获取 ID 的一种干净方法是使用IdFor(). 这允许解析分层 ID,并避免将属性的字符串名称硬编码到您的代码中。

function CheckName() {
    var value = document.getElementById('<%:Html.IdFor(t => t.CustomerName) %>').value;
    alert(value);
}
于 2013-04-27T20:05:04.290 回答