首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将输入数据从视图传递给控制器

如何将输入数据从视图传递给控制器
EN

Stack Overflow用户
提问于 2013-04-29 10:36:04
回答 2查看 5.6K关注 0票数 2

我是ASP.net MVC的新手,我使用DevExpress-MVC扩展来构建一个使用DataGrid的小型应用程序,为员工注册时间。

我的问题是:

用户可以输入他的名字的缩写,提交给控制器应该调用查询到我的数据库,并显示他的响应雇员ID。

我让我的DataViewModel将我的模型传递给视图,现在我想将它绑定到textbox并从ViewModel中检索数据就可以了,但是它做不到。

我的守则是这样的:

ViewModel

代码语言:javascript
复制
    public class MyErfassungViewModel
{
    public MyErfassung erfassung;
    public String personalnummer;
    public String personalkuerzel;
    public List<String> dim1;
    public List<String> dim2;
    public List<String> dim3;
    public List<String> dim4;
    public List<String> dim5;

    public MyErfassungViewModel(MyErfassung myerfassung)
    {
        this.erfassung = myerfassung;
    }
}

视图

代码语言:javascript
复制
    @model DevExpressMvcApplication.Models.ViewModel.MyErfassungViewModel
    <div class ="Personalnummer">
    @using (Html.BeginForm("getNummer","MyErfassung"))
    {
        <label>Personalkürzel</label>
        @Html.DevExpress().TextBox(settings =>
        {
            settings.Name = "TextBoxPersonalkürzel";
        }).Bind(Model.personalkuerzel).GetHtml()

        <label>Personalnummer</label>

        @Html.DevExpress().TextBox(settings =>
        {
            settings.Name = "TextBoxPersonalnummer";
            settings.ReadOnly = true;
        }).Bind(Model.personalnummer).GetHtml()

        @Html.DevExpress().Button(settings =>
        {
            settings.Name = "TextBoxKuerzel";
            settings.Text = "Holen";
            settings.UseSubmitBehavior = true;
        }).GetHtml()
        <br>
    }
</div>

控制器

代码语言:javascript
复制
    //
    // GET: /MyErfassung/

    public ActionResult Index()
    {
        viewModel.personalkuerzel = "sese";
        return View(viewModel);
    }
    [HttpPost]
    public ActionResult getNummer()
    {
        String kurz = Convert.ToString(Request["TextBoxKuerzel"]);
        String nr = Convert.ToString(Request["TextBoxPersonalnummer"]);

        String nummer = dbRepo.getPersonalnummerByKuerzel(viewModel.personalkuerzel);
        viewModel.personalnummer = nummer;
        return View(viewModel);
    }

就像您可以看到的一样,我尝试了一些可能的方法来接收用户输入并发送DB请求以获得一个数字。但是,无论是请求还是视图模型都包含不止一个空引用。

但简单地说,我无法将用户输入从我的表单传递回控制器。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-29 10:58:11

您只需将视图模型传递给您的控制器操作,模型绑定器将负责其余的操作。然后,您可以访问这些属性,并按您认为合适的方式处理它们:

代码语言:javascript
复制
[HttpPost]
public ActionResult getNummer(MyErfassungViewModel viewModel)
{
    String nummer = dbRepo.getPersonalnummerByKuerzel(viewModel.personalkuerzel);
    ...
}

当您将MyErfassungViewModel参数(例如,viewModel)定义到POST操作方法时,ASP.NET MVC模型绑定器将接受来自您的视图的表单值,填充MyErfassingViewModel实例并将其传递到您的方法中。

目前,getNummer方法的参数列表是空的,因此视图模型没有地方可以传递。

Update:因为MyErfassungViewModel有一个重载的构造函数,所以您需要添加一个默认构造函数,以便模型绑定器可以实例化它:

代码语言:javascript
复制
public class MyErfassungViewModel
{
    public MyErfassung erfassung;
    public String personalnummer;
    public String personalkuerzel;
    public List<String> dim1;
    public List<String> dim2;
    public List<String> dim3;
    public List<String> dim4;
    public List<String> dim5;

    public MyErfassungViewModel(MyErfassung myerfassung)
    {
        this.erfassung = myerfassung;
    }

    public MyErfassungViewModel()
    {
    }
}
票数 0
EN

Stack Overflow用户

发布于 2013-04-29 12:37:08

在下面的问题中给出了一个最终引导我找到我的数据的解决方案

ASP.NET MVC Passing Data from View to Controller

对于我的解决方案,代码如下所示:

视图

代码语言:javascript
复制
    [HttpPost]
    public ActionResult getNummer()
    {
        String kurz = Convert.ToString(Request["personalkuerzel"]);
        String nr = Convert.ToString(Request["personalnummer"]);

        String nummer = dbRepo.getPersonalnummerByKuerzel(kurz);
        viewModel.personalnummer = nummer;
        return View(viewModel);
    }

不幸的是,该解决方案似乎没有使用Ant P描述的舒适方式,即自动将响应数据应用于模型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16276506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档