将值从视图传递到控制器

时间:2014-04-20 07:03:31

标签: c# asp.net-mvc inline-editing

好的,我最近问了一个非常相似的问题,我得到了很好的答案。但是,我可能没有准确地表达我的问题所以我会再给它一个:

这是我的观点

@using (Html.BeginForm())
{
<h3  class="editable">@Model.Title</h3>

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

} 

<h3>具有类"editable",在这种情况下,它可以通过内联编辑器进行编辑。

@Model.Title

我希望能够使用内联编辑器更改我的数据库中的属性。

此代码将生成相同的结果:

@using (Html.BeginForm())
{
    <h3  class="editable">@Model.Title</h3>

    <input type="text" id="testinput" name="testinput" />

    <input type="submit" value="submit">
   } 
Controller:


[HttpPost]
        public ActionResult FAQ(string testInput)
        {


            page.Title = testInput;

            return View();
        }

尽管如此,这并没有使用我想要的内联编辑器。

是否有办法将<h3>视为textbox,因为它允许我将其中的内容发送给控制器?

我想明确表示我不想直接向控制器发送@model.title。 我想通过点击<h3>发送创建的值,并使用内联编辑器进行更改。

谢谢!

2 个答案:

答案 0 :(得分:1)

当您以这种方式提交表单时,控制器将尝试将其与正确的对象类型匹配。如果您只想传回1或2个对象,请尝试使用操作链接。这些应该允许您传递带有名称的值以匹配您的控制方法。

答案 1 :(得分:0)

查看:

@model MvcApplication2.Models.ShopItem

@{
    ViewBag.Title = "Shop";
}

<h2>ShopView</h2>
@using (Html.BeginForm())
{
    <h3 class="editable">@Model.Name</h3>
    @Html.TextBox("Cost",0.00D,null)
    <input type="submit" title="Submit" />
}

型号:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MvcApplication2.Models
{
    public class ShopItem
    {
        public int? Id { get; set; }
        public string Name { get; set; }
        public decimal? Cost { get; set; }

        public ShopItem()
        {
            Id = null;
            Name = "";
            Cost = null;
        }
    }
}

控制器:

    public ActionResult Shop()
    {
        ShopItem item = new ShopItem();
        return View(item);
    }

    [HttpPost]
    public ActionResult Shop(decimal Cost)
    {
        ShopItem item = new ShopItem();
        item.Cost = Cost;

        return View(item);
    }

如果你将它放在HomeController中,进行测试。您将看到我的输入具有强类型,并匹配我的操作输入