如何传递字符串对象数据到mvc控制器张贴

本文关键字:mvc 控制器 张贴 数据 何传递 字符串 对象 | 更新日期: 2023-09-27 18:12:01

这是我的代码

<form class="form-horizontal formtext col-xs-12 col-sm-10 col-lg-10 row">
<div class="form-group">
        <div class="col-xs-12 col-sm-5 col-lg-3 paddnone">
            <label class="control-label">First Name</label>
        </div>
        <div class="col-sm-5" ng-if="!newRecord">
            <input type="text" class="form-control" ng-model="userDetails.firstname" />
        </div>
        <div class="col-sm-5" ng-if="newRecord">
            <input type="text" class="form-control" ng-model="userDetails.firstName" />
        </div>
    </div>
    <div class="form-group">
        <div class="col-xs-12 col-sm-5 col-lg-3 paddnone">
            <label class="control-label">Last Name</label>
        </div>
        <div class="col-sm-5" ng-if="!newRecord">
            <input type="text" class="form-control" ng-model="userDetails.lastname" />
        </div>
        <div class="col-sm-5" ng-if="newRecord">
            <input type="text" class="form-control" ng-model="userDetails.lastName" />
        </div>
    </div>
    <div class="form-group">
        <div class="col-xs-12 col-sm-5 col-lg-3 paddnone">
            <label class="control-label">Email Id</label>
        </div>
        <div class="col-sm-5" ng-if="!newRecord">
            <input type="text" class="form-control" ng-model="userDetails.emailid" />
        </div>
        <div class="col-sm-5" ng-if="newRecord">
            <input type="text" class="form-control" ng-model="userDetails.emailId" />
        </div>
    </div>
    <div class="col-xs-12 col-sm-9 col-lg-7  btnbg">
            <button class="btn btn-primary " ng-click="create(userDetails)">
            SAVE
            </button>
            <button class="btn btn-primary ">
                Cancel
            </button>
        </div>
       $scope.create = function (userDetails) {
        var userData = angular.toJson(userDetails);
        return dataFactory.post("/Usercontroller/Save", userData)
        .then(function (result) {
           alert("save successfully"); 
        });
     public class UserDataModel 
     {
      public UserDataModel ();
      public Dictionary<string, string> Data { get; set; }
     public string FormName { get; set; }
     }
     public async Task<JsonNetResult> SaveUser(string applicationId, dynamic user)
     {
        Dictionary<string, string> dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(user);
         UserDataModel userDataModel = new UserDataModel ();
        //userDataModel .Data = dict;
        userDataModel.FormName  = "one";
        userDataModel = await Post<UserDataModel>(new UserDataModel{ Data = dict });
        return new JsonNetResult { Data = userDataModel  };
      }

在上面的代码中,当我点击保存按钮数据传递创建函数在js中,然后整个数据转换为字符串并传递给mvc控制器,但dynamic user得到对象,现在如何反序列化和存储到webapi。

如何传递字符串对象数据到mvc控制器张贴

    所以你在这里有两个选择,1)你应该使用razor cshtml代替对于html,它将使您的生活更加轻松。下面的链接将帮助你。http://blog.michaelckennedy.net/2012/01/20/building-asp-net-mvc-forms-with-razor/
  1. 如果你想使用现有的html代码:a)你必须使所有字段的名称与你的类对象变量相同,当服务器端c#代码在表单提交后获得控制时,它将自动解析为对象。b)将c#表单提交处理函数的参数改为FormCollection

以下链接将帮助您,ASP。. MVC 3 Razor:将数据从视图传递到控制器

反序列化:

     var json = JsonConvert.DeserializeObject<dynamic>(sampleJson);
var data = ((JObject)json.data).Children();

用动态对象反序列化JSON

让你的HTML代码像这样,使用Razor语法

@using (Html.BeginForm("Upload", "ModelClass")
{
    @Html.ValidationSummary(true)
    //HTML elements which are based on your model class members.
}

在你的控制器类方法中,它会把这个表单数据发送给Upload方法。

[HttpPost]
public ActionResult Upload(ModelClass model) 
{
    //Send model to the model object to Model class for processing
    return RedirectToAction("Upload");
}

编辑:这个方法我在ASP中使用过。. NET MVC 5在Visual Studio社区版2013上。