【问题标题】: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);
        }

【问题讨论】:

    标签: asp.net-mvc macos view controller visual-studio-code


    【解决方案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属性!
    猜你喜欢
    • 2013-07-08
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多