2016-09-19 1 views
1

Nehmen wir an, ich habe eine einfache Seite mit einigen Informationen und einem Formular.Wie werden die Daten einer Seite mit einer POST-Anfrage erfasst?

@using (Html.BeginForm("UpdateOrder", "OrderController", FormMethod.Post)) { 
     // some inputs here 
} 
<p id="user_info">Some text here</p> 

Alle eingegebenen Daten werden wie Modell oder FormCollection an den Controller gesendet.

Allerdings möchte ich auch an die Steuerung jedes Text \ Image, in der Regel alle Informationen von der Seite, die außerhalb des Formulars befindet. Hier Text mit der ID "user_info" als Beispiel.

Ich frage mich, ob es ohne jQuery, nur mit Standard-Controller-Funktionalität implementiert werden könnte.

+2

Wenn Sie jQuery/javascript nicht verwenden möchten, sollten Sie die Daten im Formular mit einem Eingabefeld speichern, damit das Formular beim Absenden auch an den Server gesendet wird. – Shyju

+0

http://stackoverflow.com/questions/34764359/i-cant-get-the-value-of-my-file-input-asp-net-mvc-entity-framework – Tushar

+1

Kurze Antwort ist nein. Ein Formular übermittelt nur die Name/Wert-Paare seiner erfolgreichen Steuerelemente (Eingabe, Textbereich, Auswahl) –

Antwort

1

Sie können es einfach

1-, wenn Sie einige tun hochladen möchten cuments oder Bilder als Ihre Form sollte wie unten Code sein:

@using (Html.BeginForm("ApplyOnline", "Applieds", null, FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
    @Html.AntiForgeryToken() 
    <input type="hidden" name="JobId" id="JobId" value="@ViewBag.JobId" /> 

    @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 

    <div class="form-group"> 
     <label class="control-label col-md-3">First Name (اسم)</label> 
     <div class="col-md-8"> 
     @Html.EditorFor(model => model.FirstName, new { htmlAttributes = new { @class = "form-control",@required="required" } }) 
     @Html.ValidationMessageFor(model => model.FirstName, "", new { @class = "text-danger" }) 
    </div> 
    </div> 
    <input type='file' name='pmd' id='pmd' /> 
<input type="submit" value="Apply" class="btn btn-primary" /> 
} 

als in countroller in post-Methode

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult ApplyOnline([Bind(Include = "Id,JobId,FirstName")] Applied applied, HttpPostedFileBase pmd, int JobId) 
{ 
    if (ModelState.IsValid) 
    { 
      //---save the data---------// 
      db.MyAppliedContext.Add(applied); 
      db.SaveChanges(); 
      //---Get inserted Id----// 
      int insertedId = applied.Id; 
      //--------Upload PMD-------------------// 
      if (pmd != null && pmd.ContentLength > 0) 
      { 
       try 
       { 
        var PMDFileName = "PMD-" + applied.JobId + "-" + TrimedUser + "-" + insertedId + "-" + pmd.FileName; 
        //var P11FileName = DateTime.Now.ToString(); 
        string path = Path.Combine(Server.MapPath("~/App_Data/system"), 
               Path.GetFileName(PMDFileName)); 
        pmd.SaveAs(path); 
        UploadFiles MyPMDUploads = new UploadFiles(); 
        MyPMDUploads.JobId = applied.JobId; 
        MyPMDUploads.ApplyId = insertedId; 
        MyPMDUploads.FileName = Path.GetFileName(PMDFileName); 
        MyPMDUploads.FilePath = path; 
        db.MyUploadFileContext.Add(MyPMDUploads); 
        db.SaveChanges(); 

        ViewBag.Message = "PMD uploaded successfully"; 
       } 
       catch (Exception ex) 
       { 
        ViewBag.Message = "ERROR PMD:" + ex.Message.ToString(); 
       } 

      } 
      else 
      { 
       ViewBag.Message = "You have not specified a PMD file."; 
      } 
    } 
    return view(Model); 
} 

diese Weise können Sie Dateien und Daten alle enthalten Hop diese Hilfe hochladen

1

Verwenden Sie das ausgeblendete Feld, um zusätzliche Daten an den Controller zu senden.

@using (Html.BeginForm("UpdateOrder", "Order", FormMethod.Post)) { 
     // some inputs here 
     <input type="hidden" name="user_info" id="user_info" value="Norway"> 
} 
//<p id="user_info">Some text here</p> 

und in OrderController Controller-Aktion Methode

public ActionResult UpdateOrder(String user_info) 
{ 
//Hidden filed **name** will be the name of the String 
//From collection can be used in similar way 
} 

EDIT: Sie versteckte Feldwert von jQuery/Javascript und nach Vorlage aktualisieren können Sie Wert bekommen kann in der Steuerung und Text aktualisiert/Bild ist etwas andere

Verwandte Themen