Сохранение значений в форме после представления - PullRequest
1 голос
/ 08 апреля 2010

Я пытаюсь сохранить введенные данные в форме после отправки, используя "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 ]

2 голосов
/ 08 апреля 2010

Просто добавьте эти строки кода, и оно должно работать.

<%

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;" />

Проблема в том, что когда вы используете <% = hour%>, он будет искать переменную с именем hour и записывать ее значение тамно поскольку нет такой переменной, определяемой как час до ее использования, она выдает эту ошибку.Что вы на самом деле хотите сделать, так это прочитать значение часа в случае отправки страницы через HTTP-POST и указать его как значение по умолчанию.Приведенный выше код просто сделает это.

Более того, я рекомендую вам использовать серверные серверные элементы управления ASP.NET, такие как (), которые предоставляют эту функцию по умолчанию.Эти элементы управления сохраняют свои значения во время обратной передачи и делают их заполненными до состояния до некоторой степени.

1 голос
/ 23 ноября 2012

Действие для отправки должно иметь параметр, имя которого соответствует имени элемента управления в представлении, или свойство модели должно иметь имя, подобное имени элемента управления.

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;}
}
1 голос
/ 08 апреля 2010

В приложении 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>
1 голос
/ 08 апреля 2010

Вы пытались поместить runat="server" в свой тег <form />?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...