0

我试图从我的控制器视图中获取用户名值,但我得到一个空值:

这是我的观点:

<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

4 回答 4

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代码来隐藏和显示面板。

于 2012-12-10T10:52:08.807 回答
0

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

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

感谢您的帮助 Jack & vTortala。

于 2012-12-10T12:26:40.683 回答
0

您是否尝试将视图控件放在 Form 中?

http://weblogs.asp.net/scottgu/archive/2007/12/09/asp-net-mvc-framework-part-4-handling-form-edit-and-post-scenarios.aspx

在此处输入图像描述
(来源:scottgu.com

于 2012-12-10T10:41:11.487 回答
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 请求并处理数据的操作方法

在 action 方法中,我们传递一个模型作为参数。该模型具有 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());  
}  
于 2019-08-28T03:25:50.590 回答