2012-03-22 32 views
1

上午爲MVC.Am使用下面的程序使用asp.net MVC3與sql server 2005.我使用下面的代碼它是正常工作。而我的問題是如何改變這個程序,如何從中獲取值CURL(PHP),而不是註冊表單值,並將該值添加到SQL Server 2005中?如何獲得mvc3內的CURL值?

UserManager.cs 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using MvcDemo.Models.DB; 
using MvcDemo.Models.ViewModels; 

namespace MvcDemo.Models 
{ 
    public class UserManager 
    { 
     private UserView obj = new UserView(); 

     public void Add(UserView user) 
     { 
      obj.FirstName = user.FirstName; 

      DB.Signup sysUser = new Signup(); 
      sysUser.FirstName = user.FirstName; 
      sysUser.LastName = user.LastName; 
      sysUser.Contactnumber = Int32.Parse(user.ContactNumber); 
      sysUser.LoginID = user.LoginID; 
      sysUser.Password = user.Password; 
      obj.AddToSysUsers(sysUser); 
         } 

       } 
} 

AccountController.cs 


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using System.Web.Security; 
using MvcDemo.Models.ViewModels; 
using MvcDemo.Models; 


namespace MvcDemo.Controllers 
{ 

    public class AccountController : Controller 
    { 

     public ActionResult SignUp() 
     { 
      return View("SignUp"); 
     } 




     [HttpPost] 
     public ActionResult SignUp(UserView user) 
     { 
      try 
      { 
       if (ModelState.IsValid) 
       { 
        UserManager userManager = new UserManager(); 

         userManager.Add(user); 
         FormsAuthentication.SetAuthCookie(user.FirstName, false); 
         return RedirectToAction("Welcome", "Home"); 

       } 
      } 
      catch 
      { 
       return View(user); 
      } 

      return View(user); 
     } 
    } 
} 

Userview.cs 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Data; 
using System.Data.SqlClient; 
using System.ComponentModel.DataAnnotations; 



namespace MvcDemo.Models.ViewModels 
{ 

    public class UserView 
    { 


     [Required] 
     [Display(Name = "First Name")] 
     public string FirstName { get; set; } 

     [Required] 
     [Display(Name = "Last Name")] 
     public string LastName { get; set; } 

     [Required] 
     [Display(Name = "Contact Number")] 
     public string ContactNumber { get; set; } 

     [Required] 
     [Display(Name = "Login ID")] 
     public string LoginID { get; set; } 

     [Required] 
     [Display(Name = "Password")] 
     public string Password { get; set; } 



     public void AddToSysUsers(DB.Signup sysUser) 
     { 
      try 
      { 
       string con = System.Configuration.ConfigurationManager.ConnectionStrings["traineeEntities"].ConnectionString; 
       SqlConnection co = new SqlConnection(con); 
       co.Open(); 
       String str = "Insert into Signup values('"+sysUser.FirstName+"','"+sysUser.LastName+"',"+sysUser.Contactnumber+",'"+sysUser.LoginID+"','"+sysUser.Password+"')"; 
       SqlCommand cmd = new SqlCommand(str, co); 
       cmd.ExecuteNonQuery(); 
      } 
      catch (Exception ex) 
      { 
       //Message=Error Creating User: User already exists 
      } 

     } 
    } 
} 

Signup.cshtml 

@model MvcDemo.Models.ViewModels.UserView 

@{ 
    ViewBag.Title = "SignUp"; 
} 

<h2>Sign-Up</h2> 

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 

@using (Html.BeginForm()) { 
    @Html.ValidationSummary(true) 
    <fieldset> 
     <legend>UserView</legend> 


     <div class="editor-label"> 
      @Html.LabelFor(model => model.FirstName) 
     </div> 

     <div class="editor-field"> 
      @Html.EditorFor(model => model.FirstName) 
      @Html.ValidationMessageFor(model => model.FirstName) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.LastName) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.LastName) 
      @Html.ValidationMessageFor(model => model.LastName) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.ContactNumber) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.ContactNumber) 
      @Html.ValidationMessageFor(model => model.ContactNumber) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.LoginID) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.LoginID) 
      @Html.ValidationMessageFor(model => model.LoginID) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.Password) 
     </div> 
     <div class="editor-field"> 
      @Html.PasswordFor(model => model.Password) 
      @Html.ValidationMessageFor(model => model.Password) 
     </div> 

     <p> 
      <input type="submit" value="Create" /> 
     </p> 
    </fieldset> 
} 

<div> 
    @Html.ActionLink("Return to Home page","Index", "Home") 
</div> 

回答

0

我很難理解你真正想做什麼。然而,如果我理解你是正確的,你想通過PHP和cURL提交註冊表單。這是你將如何提交HTTP發佈使用捲曲:

<?php 
$data = array(
    'FirstName' => 'The firstname value', 
    'LastName ' => 'The lastname value', 
    'ContactNumber ' => 'The contactnumber value', 
    'LoginID ' => 'The loginid value', 
    'Password ' => 'The password value' 
); 

$post = http_build_query($data); 

$url = 'http://url_to_your_server/Account/SignUp/'; 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
$response = curl_exec($ch); 

var_dump($response); 
+0

我如何發佈Curl中的值(參數),以及如何在mvc中獲取該值? – user 2012-03-22 12:12:31

+0

使用我發佈的代碼片段將值發佈到您的MVC控制器。在你的'SignUp'動作中,你可以使用'user.FirstName','user.LastName'等來訪問每個參數。 – alexn 2012-03-22 12:14:16

0

不太清楚你通過獲取註冊表單變量是什麼意思,你應該很容易能夠做到這一點,從您傳遞到您的行爲模型。

如果你的意思是,你如何獲得模型中不存在的外部值,則需要使用。 Request屬性。

public ActionResult Register(...) { 
    var x = Request.Form["your form value here"] // for forms 
    var y = Request.QueryString["your query string value here"] // for query strings 
    var z = Request.Headers["for headers"] // for headers 
    ... etc ... 
} 

如果你可以進一步澄清你的問題,你可能會得到一些更好的答案,截至目前我們還不清楚你的目標。