如何将模型值从视图传递到控制器?

Posted

技术标签:

【中文标题】如何将模型值从视图传递到控制器?【英文标题】:How to pass model values from a view to a controller? 【发布时间】:2018-02-25 14:29:52 【问题描述】:

我在 Mac 中使用 VSCode 创建 MVC。

参数“new question = @Model ”不应该将值从视图传递到控制器?

查看代码:

@model ProblemsV4.Models.ProblemModel

<h2>New Solution</h2>

@using(html.BeginForm("SaveSolution", "Problem", new  problem = @Model , FormMethod.Get))

    <label>Solution: </label>
    <input type="text" name="solution" /><br/><br/>
    <input type="submit" value="Save"/>
 

控制器代码:

public IActionResult SaveSolution(ProblemModel problemModel, string solution)
        
            SolutionModel model = new SolutionModel();

            model.Solution = solution;

            ProblemBC bc = new ProblemBC();

            bc.AddSolution(model);

            List<ProblemModel> models = bc.ListAll();
            ViewBag.Message = "Solução inserida com sucesso";

            return View("Index", models);
        

【问题讨论】:

【参考方案1】:

您应该在控制器处收到HttpPost,并使用HiddenFor 发送模型的参数,这是一种 HtmlHelper 不显示任何输入。

BeginForm 方法有许多签名,其中一个包含 Object routeValues,即包含路由参数的对象。你不需要用那个, 你可以像这样使用其他签名:https://msdn.microsoft.com/en-us/library/dd460344(v=vs.118).aspx

第一步:

[HttpPost] 
public IActionResult SaveSolution(ProblemModel problemModel, string solution) 
 
    SolutionModel model = new SolutionModel(); 

    model.Solution = solution; 

    ProblemBC bc = new ProblemBC(); 

    bc.AddSolution(model); 

    List<ProblemModel> models = bc.ListAll(); 

    ViewBag.Message = "Solução inserida com sucesso"; 

    return View("Index", models); 

第二步:

@model ProblemsV4.Models.ProblemModel 

<h2>New Solution</h2> 

@using(Html.BeginForm("SaveSolution", "Problem", FormMethod.Post)) 
 

    <label>Solution: </label> 

    <input type="text" name="solution" /><br/><br/> 

    @Html.HiddenFor(model => model.Problem) 
    @Html.HiddenFor(model => model.Description) 
    @Html.HiddenFor(model => model.ID) 

    <input type="submit" value="Save"/> 


【讨论】:

删除new problem = @Model.Problem new description = @Model.Description 等 - 即添加无效的html属性!

以上是关于如何将模型值从视图传递到控制器?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 4.2 设置标志并将一些值从 Popup 呈现模型视图控制器传递到 Tabbar 主视图控制器?

如何将值从 tableview 传递到 collectionview

在 codeigniter 中,如何将数组值从控制器传递到同一视图页面?

在 MVC 5 中,如何将表对象数据作为列表传递给控制器​​视图模型?

Thymeleaf 形式 - 如何将模型属性的值从一个控制器方法传递到另一个控制器方法

如何在MVC C#中将文本框和下拉值从视图传递到控制器