我是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>
我需要使用JavaScript获得t.CustomerName
值。我尝试如下,它给了我错误。
<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()。但它没有讨论如何从Html.TextBoxFor
获取价值,所以我该怎么做呢?
答案 0 :(得分:4)
var value = document.getElementById('<%=t.CustomerName%>').value;
此行导致错误。 ASP.NET MVC不像Web窗体那样生成随机客户端ID。它们将是模型中的相同属性名称。这条线是你要找的:
var value = document.getElementById('CustomerName').value;
此外,像TextBoxFor()
这样的HTML帮助程序也会将一些代理作为参数。您尝试使用的t
变量在lambda表达式的上下文中是有意义的(创建delagates和表达式的简短方法)。如果要访问模型属性,请使用Model
变量。
答案 1 :(得分:4)
获取ID的一种简洁方法是使用IdFor()
。这允许解析分层ID,并避免将属性的字符串名称硬编码到代码中。
function CheckName() {
var value = document.getElementById('<%:Html.IdFor(t => t.CustomerName) %>').value;
alert(value);
}