iT邦幫忙

0

vu js 有辦法傳值給 ASP.NET MVC razor @Html.TextBoxFor 嗎?

大家好, 最近專案上遇到一個問題, 因為先前的開發者是混用Vue與Razor語法, 剛開始接觸Razor也不太熟悉用法, 要把v-model的值傳給@Html.TextBoxFor接vue-model的值, 不知道可不可行, 目前遇到的問題是用jquery抓var _project_Num = $("#project_Num").val()的值, 但不知道有沒有辦法將_project_Num的值再加到var frm = $("form#myPage")[0];var data = new FormData(frm); 傳遞的data裡面, 然後用ajax呼叫Controller, 去解析路徑與insert資料庫, 還是有其他方法可行 還請各位大大指教

檔案上傳功能

<form>
<div id="myPage">
  <div class="mb-3 row">
     <div class="col">
        <label class="col-sm-3 col-form-label">project_id</label>
         <input type="text"
                id="project_Num"
                class="form-control"
                v-model="project.project_id" />
      </div>
  </div>
  <div class="mb-3 row">
       <div class="col">
           <label>檔案名稱</label><font color="red">*</font>
             @Html.TextBoxFor(x => x.FileUpload.file_name, new { @class = "form-control", placeholder = "請輸入檔案名稱" })
             @Html.HiddenFor(x => x.FileUpload.id)
       </div>
  </div>
  <div class="mb-3 row">
      <div class="col">
          <label>檔案路徑</label><font color="red">*</font>
          @Html.TextBoxFor(x => x.FileUpload.file_upload, new { type = "file", @class = "form-control", placeholder = "請選擇檔案" })
      </div>
  </div>
  <button type="button" id="fileUpload" class="btn btn-success">送出</button>
</div>
</form>

Jquery

$('#fileUpload').click(function () {
        // 取project_Num的值
        var _project_Num = $("#project_Num").val()
        
        // 有辦法把_project_Num值加到data裡面嗎?
        var frm = $("form#myPage")[0];
        var data = new FormData(frm);

        $.ajax({
            type: "POST",
            url: '/Project/FileUpload',
            dataType: "json",
            cache: false,
            enctype: 'multipart/form-data',
            data: data,
            processData: false,
            contentType: false,
            success: function (resultdata) {},
            error: function () {}
        });
        return false;
    });

Controller

[HttpPost]
public ActionResult FileUpload(FileUploadModel md)
 {
   FileUploadBI bi = new FileUploadBI();
   Dictionary<string, string> dic = new Dictionary<string, string>();
   string sFilePath = System.Web.Configuration.WebConfigurationManager.AppSettings["FilePath"].ToString();
   // SaveUpload 判斷檔名與儲存路徑
   string sFName = bi.SaveUpload(md.FileUpload.file_upload, sFilePath, "|.pdf|.jpg|.png|.doc|.docx|.xls|.xlsx|");
   // InsertFileUpload insert Database
   if (bi.InsertFileUpload(md.FileUpload)
    {
      dic.Add("code", ...);
      dic.Add("message", ..);
      dic.Add("messagetype",..);
    }
    else
    {
     dic.Add("code", ...);
     dic.Add("message", ...);
     dic.Add("messagetype", ...);
     }
     return Json(dic);
}
看更多先前的討論...收起先前的討論...
為何要用傳的??不是直接拿值就好了?
你各位不都還在前端嗎~~
froce iT邦大師 1 級 ‧ 2021-09-16 08:13:20 檢舉
你都用vue了,目標當然是前後端分離,razor是在後端動態渲染出來的,你要怎麼傳?

直接寫一條route打ajax取值。
小火車 iT邦新手 4 級 ‧ 2021-09-16 10:33:09 檢舉
謝謝各位大大回復, 我敘述的不夠清楚, 有在更新問題一次, 還煩請大大們能指點一下 謝謝
請問 FileUploadModel 內容是?
水無痕 iT邦新手 5 級 ‧ 2021-09-18 18:45:06 檢舉
這個能看懂嗎 ??

https://ithelp.ithome.com.tw/articles/10266626

尚未有邦友回答

立即登入回答