如何读取控制器中的视图值

时间:2012-12-10 10:29:56

标签: asp.net-mvc

我正在尝试从我的控制器中获取用户名值,但我得到一个null:

以下是我的观点:

<form action="Home/Save" method=post >

名称:     @ Html.TextBox( “名称”)      `

这是我修改过的控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";

        return View();
    }
    [HttpPost]
    public ActionResult Save()
    {
        ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";

        return View();
    }

我想更改此代码,以便我可以在“保存”操作中捕获文本框值。

如果我错过了什么,请告诉我。 感谢

4 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我假设你的编辑器模板只包含html布局代码。如果是这种情况,那么您没有获得该值的原因是因为您没有将html控件放在表单中。

为了让控制器获取值,您需要通过表单发布它,比如

@using(Html.BeginForm("Submit")){
    EmpNo:
    @Html.EditorFor(model => model.userName)
    <br/>
    Password:
    @Html.EditorFor(model => model.pwd)
    <br/>
    <input type=submit id=sbmt value=save />   
}

注意,我的语法只有在你使用Razor模板和MVC 3时才有效。另外,服务器端控件实际上是用于asp.net webform,尽量不要在MVC中使用它。你应该是javascript代码隐藏和显示面板。

答案 2 :(得分:0)

我已经提到了这个例子,它帮助了我:

http://www.dotnetcurry.com/ShowArticle.aspx?ID=705

感谢您的帮助Jack&amp; vTortala。

答案 3 :(得分:0)

第1步:创建简单兴趣模型

namespace CalculateSimpleInterest.Models  
{  
    public class SimpleInterestModel  
    {  
        public decimal Amount { get; set; }  
        public decimal Rate { get; set; }  
        public int Year { get; set; }  
    }  
}  

第2步:创建一个在UI上呈现视图的操作方法

我们正在传递一个要绑定到视图的空模型。

public ActionResult SimpleInterest()  
{  
    SimpleInterestModel model = new SimpleInterestModel();  
    return View(model);  
} 

第3步:创建强类型视图

@model CalculateSimpleInterest.Models.SimpleInterestModel  

@{  
    ViewBag.Title = "SimpleInterest";  
}  

<h2>Calulate Simple Interest</h2>  

@using (Ajax.BeginForm("CalculateSimpleInterestResult","CalculateSimpleInterest",  
                            new AjaxOptions { UpdateTargetId = "divInterestDeatils" }))  
    {  

    <fieldset>  
        <legend>Calulate Simple Interest</legend>  
        <div id="divInterestDeatils"></div>  

        <div class="editor-label">  
            @Html.LabelFor(model => model.Amount)  
        </div>  
        <div class="editor-field">  
            @Html.EditorFor(model => model.Amount)            
        </div>  

        <div class="editor-label">  
            @Html.LabelFor(model => model.Rate)  
        </div>  
        <div class="editor-field">  
            @Html.EditorFor(model => model.Rate)            
        </div>  

        <div class="editor-label">  
            @Html.LabelFor(model => model.Year)  
        </div>  
        <div class="editor-field">  
            @Html.EditorFor(model => model.Year)             
        </div>  
        <p>  
            <input type="submit" value="Calculate" />  
        </p>  
    </fieldset>  
}  

@section Scripts {  
    @Scripts.Render("~/bundles/jqueryval")  
}  

第4步:创建一个处理POST请求并处理数据的操作方法

在动作方法中,我们传递一个模型作为参数。该模型具有UI输入字段数据。在这里,我们不需要解析,也不需要编写额外的代码。

[HttpPost]  
public ActionResult CalculateSimpleInterestResult(SimpleInterestModel model)  
{  
    decimal simpleInteresrt = (model.Amount*model.Year*model.Rate)/100;  
    StringBuilder sbInterest = new StringBuilder();  
    sbInterest.Append("<b>Amount :</b> " + model.Amount+"<br/>");  
    sbInterest.Append("<b>Rate :</b> " + model.Rate + "<br/>");  
    sbInterest.Append("<b>Time(year) :</b> " + model.Year + "<br/>");  
    sbInterest.Append("<b>Interest :</b> " + simpleInteresrt);  
    return Content(sbInterest.ToString());  
}