MVC Html助手使标签可编辑

时间:2013-03-01 08:39:03

标签: asp.net-mvc gridview html-helper

我在我的视图中生成了一个html表,有没有人知道我可以使用的任何帮助器,以便可以在线编辑其中一个字段。

查看:

 <table>
  <caption>Configuration values for current management group</caption>
    <thead>
      <tr>
        <th scope="col">Device Type</th>
        <th scope="col">Section</th>
        <th scope="col">Name</th>
        <th scope="col">Value</th>
        <th scope="col">Operation</th>
      </tr>
    </thead>
    <tbody>
    @foreach (var param in Model.ParamData)
    {
      <tr>
        <td>@param.DeviceType</td>
        <td>@param.Group</td>
        <td>@param.Name</td>
        <td>@param.Value</td>
        <td>@(param.IsMerge ? "Merge" : "Delete")</td>
      </tr>
    }
    </tbody>
  </table>

正如您所看到的,这里没有什么特别之处,我想要一个与Web表单gridview类似的编辑列。唯一要编辑的字段是值,它始终是一个文本框。

我相信人们之前必须这样做,但我见过的唯一例子是mvc 1。

我可以使用jquery来解决问题,但我确定必须有大量的例子并且不想重新发明轮子。

1 个答案:

答案 0 :(得分:0)

如果有兴趣的话,我自己也做过:

  @foreach (var param in Model.ParamData)
    {
      <tr>
        <td>@param.DeviceType</td>
        <td>@param.Group</td>
        <td>@param.Name</td>
        <td>
        <div class="@("ViewValueDiv_" + param.ParamaterValueId)">
          @param.Value
        </div>
        <div class="@("EditValueDiv_" + param.ParamaterValueId)" style="display:none;">
         <input type="text" name="@("EditValue_" + param.ParamaterValueId)" value="@param.Value" class="@("Input_" + param.ParamaterValueId)" />
        </div>
        </td>
        <td>@(param.IsMerge ? "Merge" : "Delete")</td>
        <td>
        <div class="@("EditButtonDiv_" + param.ParamaterValueId)">
          <input type="button" value="Edit" class="EditButton" Id="@param.ParamaterValueId" />
        </div>
        <div class="@("UpdateCancelButtonDiv_" + param.ParamaterValueId)" style="display:none;">
          <input type="button" value="Update" class="UpdateButton" id="@("U" + param.ParamaterValueId)"  />
          <input type="button" value="Cancel" class="CancelButton" id="@("C" + param.ParamaterValueId)"  />
        </div>
        </td>
      </tr>
    }


$(document).ready(function () {
  $(".EditButton").click(function () {
    var id = $(this).attr('id');
    $(".ViewValueDiv_" + id).hide();
    $(".EditValueDiv_" + id).show();
    $(".EditButtonDiv_" + id).hide();
    $(".UpdateCancelButtonDiv_" + id).show();
    oldvalue = $(".Input_" + id).val();
  });

  $(".CancelButton").click(function () {
    var id = $(this).attr('id').substr($(this).attr('id').indexOf("C") + 1);
    $(".ViewValueDiv_" + id).show();
    $(".EditValueDiv_" + id).hide();
    $(".EditButtonDiv_" + id).show();
    $(".UpdateCancelButtonDiv_" + id).hide();
    $(".Input_" + id).val(oldvalue);
  });

  $(".UpdateButton").click(function () {
    var id = $(this).attr('id').substr($(this).attr('id').indexOf("U") + 1);

    NewValue = $(".Input_" + id).val();

    if (NewValue) {

      $.ajax({
        url: "/Terminals_configuration/UpdateConfigValue",
        data: { valueId: id, newValue: NewValue },
        dataType: "json",
        type: "POST",
        error: function () {
          alert("An error occurred.");
        },
        success: function (data) {
          $(".ViewValueDiv_" + id).show();
          $(".EditValueDiv_" + id).hide();
          $(".EditButtonDiv_" + id).show();
          $(".UpdateCancelButtonDiv_" + id).hide();
          $(".ViewValueDiv_" + id).html(NewValue);
        }
      });
    } else {
      alert("You didn't supply a new value");
    }

  });
});