提交后在表格上保留价值

时间:2010-04-08 08:41:07

标签: asp.net asp.net-mvc forms

我在尝试使用“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:当前上下文中不存在名称“小时”

任何解决方案? 非常感谢,提前, 丽娜

4 个答案:

答案 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;}
}