我在尝试使用“value = ...”
提交后,将输入的数据保留在表单中我在以下代码中遇到编译错误:
<form id="myform">
<input id="hour" type="text" name="hour" value="<%=hour%>" style="width:30px; text-align:center;" /> :
<input id="minute" type="text" name="minute" value="<%=minute%>" style="width:30px; text-align:center;" />
<br/>
<input type="submit" value="Validate!" />
</form>
错误是: 描述:编译服务此请求所需的资源时发生错误。请查看以下特定错误详细信息并适当修改源代码。
编译器错误消息:CS0103:当前上下文中不存在名称“小时”
任何解决方案? 非常感谢,提前, 丽娜
答案 0 :(得分:2)
只需添加这些代码行即可。
<%
string hour = string.IsNullOrEmpty(Request.Form["hour"]) ? string.Empty : Request.Form("hour").ToString();
%>
<input id="hour" type="text" name="hour" value="<%=hour%>" style="width:30px; text-align:center;" />
问题在于,当你使用&lt;%= hour%&gt;时,它会查找一个名为hour的变量并在那里写入它的值,但由于没有这样的变量定义为使用它之前的小时,因此会出现此错误。你真正想做的是通过HTTP-POST读取页面提交时的小时值,并将其作为默认值。上面的代码就是这样做的。
此外,我建议您使用默认情况下提供此功能的ASP.NET服务器控件(如())。这些控件在回发中保留其值,并在一定程度上使它们状态良好。
答案 1 :(得分:1)
您是否尝试将runat="server"
放在<form />
代码上?
答案 2 :(得分:1)
在ASP.NET MVC应用程序中,建议使用html帮助程序生成表单和输入标记。例如:
型号:
public class MyModel
{
public int Hour { get; set; }
public int Minute { get; set; }
}
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new MyModel());
}
[HttpPost]
public ActionResult About(MyModel model)
{
if (ModelState.IsValid)
{
// the model is valid => do something with it
}
return View(model);
}
}
查看页面:
<%@ Page Language="C#"
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<Ns.MyModel>" %>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<% using (Html.BeginForm("index", "home", FormMethod.Post, new { id = "myform" })) %>
<%= Html.TextBoxFor(x => x.Hour, new { style = "width:30px; text-align:center;" }) %>
<%= Html.TextBoxFor(x => x.Minute, new { style = "width:30px; text-align:center;" }) %>
<br/>
<input type="submit" value="Validate!" />
<% } %>
</asp:Content>
答案 3 :(得分:1)
提交操作必须具有参数,其名称与视图中的控件名称相同,或者模型具有类似控件名称的属性。
public ActionResult acTest(string hour, string minute)
{ ... }
或者
public ActionResult acTest(iTime md)
{ ... }
public class iTime
{
public string hour{get;set;}
public string minute{get;set;}
}