Получение и обработка введенных данных в MVC - просто - PullRequest
1 голос
/ 27 января 2012

У меня есть несколько вопросов относительно моей кривой обучения MVC

Цель:

Я хочу получить введенный текст txtMHM после нажатия btnStat и показать введенный текст через метку или интервал или...

Ответы [ 2 ]

3 голосов
/ 27 января 2012

Модель просмотра, которую вы должны использовать (упрощенно):

public class YourViewModel
{
    public string TextEntered { get ; set ; }
}

Вид:

@model YourViewModel

@using (Html.BeginForm())
{
    @Html.TextBoxFor(m => m.TextEntered)
    <br />
    <input id="btnStat" type="submit" value="MHM" />
}

@Html.LabelFor(m => m.TextEntered)

Метод действия контроллера:

[HttpPost]
public ActionResult ChangeLabelText(YourViewModel yourViewModel)
{
    return View(yourViewModel);
}



Ваш измененный код

index.cshtml

@model MVCTest1.Models.EnteredTextModel 


@using (Html.BeginForm()) 
{ 
    @Html.TextBoxFor(m => m.TextEntered) 
    <br /> 
    <input id="btnStat" type="submit" value="MHM" /> 
} 

@Html.LabelFor(m => m.TextEntered)

Модель

namespace MVCTest1.Models 
{ 

    public class EnteredTextModel 
    { 
        public string TextEntered { get; set; } 

    } 
} 

Домашний контроллер

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using MVCTest1.Models ; 

namespace MVCTest1.Controllers 
{ 
    public class HomeController : Controller 
    { 
        public ActionResult Index() 
        { 
            ViewBag.Message = "Welcome to ASP.NET MVC!"; 

            return View(); 
        } 

        [HttpPost]
        public ActionResult Index(EnteredTextModel theModel) 
        { 
            return View(theModel); 
        } 

        public ActionResult About() 
        { 
            return View(); 
        } 

    } 
} 
1 голос
/ 27 января 2012

Sypress,

Лучшей практикой будет использование модели представления для ваших действий. Однако на очень простом уровне, основанном именно на том, что у вас есть выше, вы можете использовать объект viewbag, чтобы передать обратно входное значение. без лишних слов, блин, я имею в виду код :):

Действия контроллера:

[HttpGet]
public ActionResult ChangeLabelText()
{
    return View();
}

[HttpPost]
public ActionResult ChangeLabelText(FormCollection formCollection)
{
    ViewBag.LastNameEntered = formCollection["txtName"];
    return View();
}

Просмотр материала (предполагается, что представление называется ChangeLabelText.cshtml, конечно):

@{
    ViewBag.Title = "ChangeLabelText";
}

<h2>ChangeLabelText</h2>
<form action="ChangeLabelText" method="post">
    <input id="txtMHM" type="text" name="txtName" value="" />
    <input id="btnStat" type="submit" value="Post"  />  
    <br />
    @Html.Label("Entered Text");
    <span id="spnEnteredText">@ViewBag.LastNameEntered </span>
</form>

и выше называется так http://localhost:xxxx/Home/ChangeLabelText (где xxxx - номер порта вашего сервера разработки)

Я бы добавил, что это НЕ был бы способ, которым я бы подошел к этому, если честно, но это мой прямой ответ на ваш пример. перейдите к примеру с акулами, используя модель представления.

удачи

[РЕДАКТИРОВАТЬ] - я обновил свой ответ теперь, когда я нахожусь на машине, поэтому вышеприведенное должно работать как задумано.

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